0

サーバーとしてラップトップで次のコードを使用しています。

WSADATA wsd = { 0 };
WSAStartup(MAKEWORD(2, 0), &wsd);

SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN sin = { 0 };
sin.sin_family = AF_INET;
sin.sin_port = htons(15000);
sin.sin_addr.s_addr = inet_addr("0.0.0.0");

bind(s, (const sockaddr*)&sin, sizeof(sin));
listen(s, 10);

int len = sizeof(SOCKADDR_IN);
SOCKET a = accept(s, (sockaddr*)&sin, &len);

私の携帯電話では、次のコードが実行されます。

    Socket s = new Socket();
    try {
        s.connect(new InetSocketAddress("*.*.*.*", 15000));
        Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
    } catch (IOException e) {
        Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }

パブリック IP を使用して、ネットワーク内の別のコンピューターで telnet と同じものを使用しました。悲しいことに、次の例外メッセージが表示されます。

failed to connect to /*.*.*.* (port 15000): connect failed: ECONNREFUSED (Connection refused)

さて、私はルーターの設定を再確認しました。次の図でわかるように、ipconfig はラップトップ IP として 192.168.1.109 を与えました。ポートはその IP に転送されます。 ポート転送

ファイアウォールが無効になっていることをもう一度確認した後、wireshark を起動し、ポート 15000 を確認しました。何も着信せず、TCP パケットもありません。明らかに、パケットは私のコンピューターに来ておらず、以前に拒否されています(ルーター?)

数日前 (トップ 2 週間) に、作業中のゲーム用のサーバーをホストしている別のポートで動作させました。同じ問題が発生しましたが、もう機能しません。

すべての着信接続が拒否される原因は何ですか?

4

1 に答える 1