0

接続を受け入れてクライアントにメッセージを送信する実験的なサーバープログラムを作成しようとしています。クライアントを接続させましたが、本当に奇妙なことをしなければメッセージを送信できないようです。

たとえば、このスニップにconnは、接続されたソケットがあります。

int sendRes;
char buf[1024];
strcpy_s(buf,"Testing!");
sendRes = send(conn,buf,strlen(buf),0);
そうですね、Telnet経由で接続すると、何も表示されず、ただ終了します。ただし、このスニップの最後に行を追加するとcout << sendRes、突然機能し、テストが表示されます。Telnetで、必要に応じて。

それで、知っている人に聞いてみたいのですが、なぜそういうふうに振る舞うのですか?

4

1 に答える 1

1

telnet クライアント自体が、行末マーカーが着信バッファーを表示するのを待っている可能性がありますか?

独自のクライアントを作成recvし、何かが着信しているかどうかを確認するために使用してみてください。

cout繰り返しますが、ローカル側にあるため、改行はそれとは関係がない場合があります。

完全な telnet 仕様については、 RFC854を確認してください(または、単純に独自のクライアントを作成してください)。

于 2011-03-26T07:51:56.443 に答える