HTTPサーバを書くのはかなり簡単です。私は少なくとも2を書いています。ガイドとして私は強くあなたが"HTTP Made Really Easy"を読むことをお勧めします。 1997年に最初に公開され、2002年に初めてサーバーを作成しました。
HTTPサーバーは基本的に、ダブル改行("\n\n"
)を待つ必要があります。 Content-Length
ヘッダーがある場合は、入力の多くのバイト(POST要求とPUT要求用)を読み取る必要があります。
これだけです。他のすべてはあなたが持っているデータをどのように解釈するかについてです。
ああ、チャンク転送のエンコードもありますが、これはHTTP/1.1以上のサーバでのみ必須です。 HTTP/0.9サーバーとして自分自身を識別してください。 Webサーバが見ることができるか、単純な参照するには
:http://wiki.tcl.tk/28414(コードの8行)
ここでは、JavaScriptで同様のサーバーです:
// WARNING: Does not support POST or PUT body
var net = require('net');
var server = net.createServer(function(sock){
var buffer = '';
sock.on('data', function(chunk){
buffer += chunk.toString('utf8'); // assumptions!!
if (buffer.match(/(\r?\n){2}/)) { // looking for double \n\n
sock.write("HTTP/0.9 200 OK\nConnection:close\n\n");
sock.write("Hello!");
sock.end();
}
});
});
server.listen(8080, function(){
console.log('Server started');
});
あなたはbuffer
文字列を処理することによって、要求を処理することができます。最初の行はGET
行です。
問題を再現できません。 NodeのHTTPパッケージを使用してテストしたときにうまく動作します。 https://www.evernote.com/l/AAOgJZU6G55L85nFBeNEs9Hfov7QdX_gPtEあなたは[MCVE]を提供する必要があります。 – Quentin
HTTP/1.0は20歳以上です(1996年2月以降)。クライアントが投票するのに十分な年齢であれば、クライアントの選択肢を再検討することができます。 – Art
@QuentinあなたはHTTP/1.0の部分なしで試すことができますか?私が使用するデバイスはGET/ – cgcgbcbc