0

私は C++ で Winsock を学ぶために結び始めましたが、いくつか問題があります。MSDN の Winsock Example (基本的なクライアント サーバー) に従うことから始めました。 http://msdn.microsoft.com/en-us/library/ms738545(v=vs.85).aspx

コードをビルドして実行すると、次の出力が得られます。

クライアント.exe

14 バイトが送信されました。
接続が閉じられました。

サーバー.exe

Server.exe コマンド ウィンドウで何も起こりません。何が間違っているのかわかりません。私は Winsock を初めて使用しますが、Server.cpp ファイルで tell を呼び出す限り、accept() 関数は決して戻りません。

ヘルプ/ポインタをいただければ幸いです。
前もってありがとう、トム。

EDITコードは上記の MSDN リンクにあります。クライアントとサーバーのコードのページを下にスクロールします。

4

1 に答える 1

1

クライアントがサーバーに接続していないようです。何かに接続されていますが、サーバーではない可能性があります。ここに私が見るいくつかのことがあります:

  1. クライアントにサーバーの IP アドレスをハードコーディングします。

  2. サーバーは IPv4 のみをリッスンしますが、クライアントは IPv4 と IPv6 の両方を試します。問題ないはずですが、この段階であいまいさを取り除くことをお勧めします。クライアントで、AF_UNSPEC と表示されている箇所を AF_INET に変更します。

  3. ポート 27015 (おそらく IPv6) でリッスンしているものがないかどうかを確認します。netstat.exe を実行して、使用中のソケットを確認します。

  4. サーバーに接続するには、プレーンな古い telnet を使用します。接続したら、何か入力して Enter キーを押し、サーバーの動作を確認します。

  5. クライアントでの呼び出しを取り除きshutdown(ConnectSocket, SD_SEND)ます。それは問題ないはずですが、少し変わっているように思います。ソケットで一方向だけをシャットダウンしたことはありません。ソケットを完全に使い終わったら、常に SD_BOTH を使用します。

  6. 同じマシンで両方のプロセスを実行していますか、それとも中間にプロキシまたはファイアウォールがありますか? たとえば、プロキシはクライアント接続を受け入れても、サーバーへの接続に失敗する場合があります。

幸運を!

于 2011-01-16T23:13:22.913 に答える