0

TCPSocket オブジェクトで「gets」メソッドを繰り返し使用すると、次の出力が表示されます

POST /targetPage.html HTTP/1.1
Host: 127.0.0.1:7125
...
...
...
Keep-Alive: 115
DNT: 1
Connection: keep-alive
Referer: http://127.0.0.1:7125/
Content-Type: application/x-www-form-urlencoded
Content-Length: 45

もう一度 .gets を使用すると、すべてがハングします。長さ 45 のこの「コンテンツ」を取得するにはどうすればよいですか? TCPSocket オブジェクトからこれを取得できますか、それとも何か他のものを使用する必要がありますか?

4

2 に答える 2

2

gets行を読み取るため、接続がタイムアウトするか、改行文字を読み取るまでブロックされます。read指定されたバイト数を読み取るメソッドを使用する必要があります (これは Content-Length ヘッダーで非常に便利に提供されます)。

于 2011-05-18T19:55:27.040 に答える
0

ヘッダーを含めます。

接続: 閉じる

ヘッダーに。これにより、リクエストの本文を実際に読み取る前にハングするのを防ぐことができます。

于 2013-06-03T05:26:12.210 に答える