0

問題:PythonサーバーとJavaクライアント間の接続を安定させたい。クライアントは例外を発生させます:

java.net.ConnectException:接続が拒否されました:接続

サーバーコード:

print('MOTD/name system initialized!')
        global people
        welcome = socket.socket()
        welcome.bind((socket.gethostname(), 31123))
        while True:
            welcome.listen(1)
            w, nouse = welcome.accept()
            ...
            w.send(m.strip().encode())
            w.close()

クライアントコード:

Socket welcomesocket = new Socket("localhost", 31123);
BufferedReader motd = new BufferedReader(new InputStreamReader(welcomesocket.getInputStream()));
servs.set(i, motd.readLine());
welcomesocket.close();

問題はJava、Pythonにある必要があります-同じ状況でのPython接続は正常に機能します。

4

2 に答える 2

1

「Java」ではなく、接続の問題のように見えます。たぶん、あなたの環境についてのもう少しの情報が役立つでしょう。

その間:

telnetクライアントを使用している場合は、「telnet localhost 31123」のように実行してみてください。これにより、接続できるようになります。それ以外の場合は、接続しているサーバーに問題があります。

よろしく

于 2013-03-27T12:54:16.150 に答える
1

1つの問題は、Pythonサーバーがサーバーのホスト名に対応するIPアドレスをバインドして受け入れているが、クライアントが「localhost」に接続しようとしていることです。つまり、ループバックIPアドレスです。

クライアントは、サーバーがバインドしているものと同じホスト名/IPアドレスを使用する必要があります。また、クライアントとサーバーが異なるマシン上にある場合、「localhost」はまったく使用できません。(「localhost」名は通常、127.0.0.*ループバックアドレスを意味します。名前が示すように、ループバックアドレスへの接続は、接続元のホストに「ループバック」します。つまり、ループバック接続はクライアントのマシン/仮想から外れません。

于 2013-03-27T13:07:24.613 に答える