1

私は基本的なクライアント サーバーを構築しようとしているので、それを変更してから IDA で分析を行うことができます。決定的なガイドとして、Beej のソケット プログラミング例を指摘されました。

http://beej.us/guide/bgnet/output/html/multipage/clientserver.html

私は通常、プログラミングなどの作業環境として Cygwin を使用しています。これらのプログラムをコンパイルすると、サーバー プログラムは Cygwin で動作しませんが、クライアント プログラムは動作します。

まったく同じサーバー コードをコンパイルして Linux で実行すると、問題はなく、問題なく動作します。

他の人にも同じ方法で試してもらいましたが、同じ結果が得られました。サーバーに接続しようとすると、クライアントが閉じて次のように表示されます。

client: connect: connection timed out
client: failed to connect

また、パケット キャプチャは、TCP SYN パケットがサーバーに送信されていることを示していますが、サーバーは応答しません。

Cygwin でこれが失敗する理由を説明して、解決策を提案してもらえますか?

4

1 に答える 1

2

Beej によって提供されたプログラムが、サーバー上でデフォルトで IPv6 になっていることがわかりました。解決策は、IPv6 アドレスを使用してクライアントのサーバー アドレスをアドレス指定するか、代わりに IPv4 を使用するようにサーバーを変更することでした。これは、サーバー コードを次のように変更することで実現できます。

hints.ai_family = AF_UNSPEC;

hints.ai_family = AF_INET;

これが誰かに役立つことを願っています。

于 2014-04-02T17:21:29.210 に答える