2

TCP ソケットを使用して通信しています。

作業中に問題が発生

  • クライアントは「ソケット」インスタンスを作成できません。
  • 奇妙な点はそれです(Pythonを使用するサーバーで)

    Python で「socket」クラスを使用しても問題は発生しませんが、Python で「SocketServer.TCPServer」クラスを使用すると問題が発生します

これが私の環境です。

  • サーバー: パイソン
  • クライアント : Java / 多くのユーザーが接続を試みます。

サーバー コード (Python を使用):

  1. SooMain.py

    名前== "メイン" の場合:

    server = SooServer('localhost', PORT_DEBUG, SooRequestHandler)
    server.serve_forever()
    
  2. SooServer.py

    class SooServer(SocketServer.TCPServer):
    "This is Server For Project201201"
    
    def __init__(self, 
                 host='localhost', 
                 port=PORT_DEBUG,
                 handler=SooRequestHandler):
        #SocketServer.ThreadingTCPServer.__init__(self, (host, port), handler)
        SocketServer.TCPServer.__init__(self, (host, port), handler)
        print "SooServer <State> __init__"
        self.abort=0
        self.timeout=10
    
    def shutdown(self):
        SocketServer.ThreadingTCPServer.shutdown(self)
        print "SooServer <State> shutdown"
    

クライアント コード (Java を使用):

  1. TestJava.java

    public class TestJava {    
     public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
    
        try {
    
            String[] aStrData = {
            "Test",
            "Test"          };
    
            InetAddress m_oInetAddr = InetAddress.getByName(DEBUG_ADDR); 
            Socket m_oSocket = new Socket(m_oInetAddr, DEBUG_PORT); //This Line Makes Exception!!!!!
    
            PrintWriter out = 
                    new PrintWriter(
                    new BufferedWriter(
                    new OutputStreamWriter(m_oSocket.getOutputStream())), true);
    
            int nNumData = aStrData.length;
            out.println(Integer.toString(nNumData));
    
            for (int i=0 ; i<nNumData ; i++) {                  
                out.println(aStrData[i]);
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }   
      }
    }
    

エラー コード (Java を使用):

Releated Line : Socket m_oSocket = new Socket(m_oInetAddr, DEBUG_PORT);


java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:241)
    at TestJava.main(TestJava.java:51)
4

1 に答える 1

1

問題は、サービスがそのポートで実行されていないか、他のアプリケーションがそのサービスを既に使用している可能性があることです...

This exception usually means that there is no service listening to
the port you are attempting to connect to.

以下のことを確認してください。

  • 接続しようとしているホスト名とポートが正しい
  • サーバー側が正しくリッスンしている
  • 接続をブロックするファイアウォールはありません
于 2012-09-27T04:54:35.003 に答える