1

私は初心者で、ここでコードをテストしようとしていました(Redis イベント ループを使用しています)。

しかし、127.0.0.1:8000 にリクエストを送信すると、サーバーは応答を送信せず、ハングします。いくつかの変更を加える必要がありますか? 要求をエコー バックする必要があるだけで、この例ではそれを意図しています。

4

1 に答える 1

2

なぜこれが HTTP サーバーだと思いますか? そうではない。これは壊れた TCP エコー サーバーです。

書き込み操作がイベント ループの制御下にないため、壊れています。非ブロッキング書き込み操作ですべてのバイトを送信できない場合、一部のバイトが失われます (そのような保証はありません)。

ここで、適切なクライアントを使用する場合、このプログラムを引き続き実行できます。

$ telnet 127.0.0.1 8000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
toto
toto
titi
titi
tutu
tutu

... while the output of the program itself is:

Accepted 127.0.0.1:48645

イベント ループで遊びたい場合は、次のリストから 1 つを選択することをお勧めします。それらはおそらく、github で見つかった最初のランダム ae ハックよりもはるかによく文書化されています ...

于 2013-08-04T15:48:45.983 に答える