この記事では、Socket TCP / IPプログラミングの知識について触れています。実際、これは非常に単純なコンテンツです。表示されていない場合は読み上げて、後でもう一度読むことができます。非常に単純な場合があります。
多くの人がウェブサイトの作成に慣れており、ウェブサイトのバックエンドサービスにIISやTomcatなどの高度なバックエンドを使用していますが、これらのバックエンドが登場する前は、どのようにウェブサイトを作成したのでしょうか。彼らが一番下で遵守している規範と基準は何ですか?
これはhttpプロトコルとhtml、js、css標準です。これらはすべて国際的に統一された標準であり、.net、java、phpなどの言語とは何の関係もありません。たとえば、次のコードです。
<html>
<ボディ>
<form runat = "server" id = "form1">
<%
string str_response = "hello world";
.........................................。
Response.Write(str_response);
%>
<asp:Button ID = "bn_1" runat = "Server" Text = "点击" />
</ form>
</ body>
</ html>
長いコードは最終的に次のように解析されます
<html>
<ボディ>
<form id = "form1" action = "">
こんにちは世界
<input type = "submit" value = "点击" name = "bn_1" />
</ form>
</ body>
</ html>
IISは、<%%>のコンテンツを出力するコンテンツに変換すると同時に、<asp:のこれらのタグを対応するタグ(ここでは<input>タグ)に変換するのに役立ちます。これは、の非標準タグです。 html。iisによって指定されたタグに属し、iisは、これらのタグを標準タグに変換して顧客に返す責任があります。
以上が基本です。ウェブサイトを書いたことのある人の多くは、何が起こっているのか知っていると思います。以下のトピックに戻りましょう。
次のコードは、誰もが使用することはめったにありません。
GET /siteserver/mypage.youlike?h_username=myname HTTP / 1.1
Accept:* / *
Accept-Language:zh-cn
Content-Type:application / x-www-form-urlencoded
Accept-Encoding:gzip、deflate
User-Agent: Mozilla / 4.0(互換性; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152;
.NET CLR 3.5.30729)
ホスト:127.0.0.1:45632
コンテンツの長さ:93
接続:Keep-Alive
Cache-Control:no-cache
実際には、これは非常に簡単です。これは、クライアントIEのURL開くものですhttp://127.0.0.1:45632/siteserver/mypage.youlike?h_username=myname、http://127.0.0.1:45632すべてが受信したがこのウェブサイトの背景プロトコルコード。
これらの文字列は改行で区切られます。
このうち、127.0.0.1:45632は標準サイトのアドレス、127.0.0.1はIP、45632はサーバーによって監視されるポートです。
User-Agentがブラウザ情報になった後、GETとHTTP / 1.1の間の/siteserver/mypage.youlikeがアクセスするターゲットアドレスになります。もちろん、自分で作成したバックエンドの場合、このターゲットアドレスは実際にはインデックスなどです。 index。aspxとして、サーバーに必要なデータを伝えます。mypage.youlikeはこのファイルに実際に存在するか、サーバーによって定義された単なるインデックスである可能性があります。サービスのswitchステートメントはそれをmypage.youlikeと判断します。対応するデータが返されます。
もちろん、/ siteserver /mypage.youlikeの後にgetパラメータ情報が続きます。Webを作成する友人は非常に明確でなければならないと思います。
さて、上記はgetの例ですが、相手が郵便で来た場合はどうなりますか?それは実際には非常に単純で、最後にたくさんのものを追加するだけです。
POST /siteserver/mypage.youlike?h_username=myname HTTP / 1.1
Accept:* / *
Accept-Language:zh-cn
Content-Type:application / x-www-form-urlencoded
Accept-Encoding:gzip、deflate
User-Agent: Mozilla / 4.0(互換性; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152;
.NET CLR 3.5.30729)
ホスト:127.0.0.1:45632
コンテンツの長さ:93
接続:Keep-Alive
Cache-Control:no-cache
page = 12&title_id = 300
サーバーがこれらのデータを受信した後、サーバーは何をしますか?
実際、上記のプロセスは要求要求プロセス、つまりサーバー受信プロセスであり、サーバー側の他のプロセスはリターンと呼ばれ、応答の応答プロセスです。次に何をしますか?
参照用のコードを提供します。
if(str_request_file == "/ siteserver / mypage.youlike")
{ string send_msg = "<!DOCTYPE HTML PUBLIC /"-// W3C // DTD HTML 4.0 Transitional // EN / ">"; send_msg + = "<html xmlns = /" http://www.w3.org/1999/xhtml/ ">"; send_msg + = "<head> <meta http-equiv = /" content-type / "content = /" text / html; charset = gb2312 / "/> <title>广业IISサーバー</ title> </ head> <body>"; send_msg + = "<form action = /" http://127.0.0.1/siteserver/gps.aspx/ "method = /" post / "id = /" f1 / "name = /" f1 / ">"; send_msg + = "
send_msg + = "</ form>";
send_msg + = "<script type = /" text / javascript / ">";
// send_msg + = "document.getElementById(/" f1 / ")。submit();";
send_msg + = "</ script>";
///根取ページ= 12&title_id = 300、h_username = mynameこれ目参数读取数データベース库、メッセージ一内容加されてsend_msg里
send_msg + = "</ body>";
send_msg + = "</ html>";
バイト[] msg = System.Text.Encoding.GetEncoding( "gb2312")。GetBytes(send_msg);
string str_senddd = "HTTP / 1.1 200 OK / r / nVia:1.1 GY-14SWFMJH7AP2 / r / nConnection:Keep-Alive / r / nProxy-Connection:Keep-Alive / r / nContent-Length:" + msg.Length.ToString ()+ "/ r / nContent-Type:text / html / r / nServer:GYXX / 1.0 / r / nCache-Control:private / r / n / r / n";
sendtoclient(sock、str_senddd + send_msg);
}
ここでのsendtoclientメソッドは、文字列str_senddd + send_msgをソケットに書き込むことです。
実際、最も単純なiisサービスは、このような読み取りと書き込みのプロセスです。HTTPプロトコルは、このプロセスと切り離せません。これを確認して入力してください。幸運は個人によって異なります。
連絡先:QQ:13896398、Tel:13437839547