2011-01-16 17 views
0

私はC++でWinsockを学び始めましたが、いくつか問題があります。 私はMSDN(基本的なクライアントサーバー)のWinsockの例に従って始めました。 http://msdn.microsoft.com/en-us/library/ms738545(v=vs.85).aspx私が構築し、コードを実行すると、私は出力を得るC++ Winsock - accept()

CLIENT.EXE

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

Server.exeが

何もServer.exeがcmdをウィンドウに起こりません。 私は何をしているのか分かりません。私はWinsockの新機能ですが、Server.cppファイルでaccept()関数が返すことはありません。

助けてください/指針はありがとうございます。
事前に感謝、トム。

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

+1

一部のコードは役に立ちます! – Secko

+0

コードはMSDNリンクのポストにあります(クライアントコードとサーバーコードは下にスクロールします)。私はコードを変更していない。 – Tom

答えて

1

クライアントのようなサウンドはサーバーに接続されていません。それは何かに接続されていますが、あなたのサーバーではないかもしれません。ここで私が見ているいくつかのものがあります:

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

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

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

  4. 普通の古いtelnetを使用してサーバーに接続します。接続する場合は、何かを入力してEnterキーを押し、サーバーの動作を確認します。

  5. クライアントでshutdown(ConnectSocket, SD_SEND)への呼び出しを取り除く。それはOKであるはずですが、ちょっと変わったことで私にぶつかります。ソケットで一方向だけをシャットダウンしたことはありません。私はソケットで完全に終わったときに常にSD_BOTHを使います。

  6. 両方のプロセスを同じマシンで実行しているのですか、またはプロキシやファイアウォールが途中にありますか?プロキシはクライアント接続を受け付けても、サーバーへの接続に失敗する可能性があります。

幸運を祈る!

+0

こんにちは、ありがとうございました。私はポートを変更し、それは正常に働いた。 :) – Tom

+0

クール - あなたがそれを並べ替えてうれしい。 –