Python服务器/ Java客户端“连接被拒绝:连接”

时间:2012-09-27 04:33:43

标签: java python client-server serversocket

我正在使用TCP Socket进行通信。

工作时出现问题

  • 客户端无法制作'套接字'实例。
  • 奇怪的是(在使用Python的服务器中)

    在python中使用'socket'类不会导致问题, 但在python中使用'SocketServer.TCPServer'类导致问题

这是我的环境。

  • 服务器:Python
  • 客户端: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"
    
  3. 客户端代码(使用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();
          }   
        }
      }
      
    2. 错误代码(使用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)
      

1 个答案:

答案 0 :(得分:1)

问题可能是您的服务未在该端口上运行,或者可能是已经使用该服务的其他应用程序,因为......

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

检查以下事项。

  • 您尝试连接的主机名和端口正确
  • 服务器端正确收听
  • 连接没有防火墙阻止