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

Python服务器/Java客户端“;连接被拒绝:connect";,java,python,client-server,serversocket,Java,Python,Client Server,Serversocket,我正在使用TCP套接字进行通信 工作时,出现了一个问题 客户端无法生成“套接字”实例 奇怪的是(在使用Python的服务器中) 在python中使用“socket”类不会导致问题, 但在python中使用“SocketServer.TCPServer”类会导致问题 这是我的环境 服务器:Python 客户端:Java/许多用户将尝试连接 服务器代码(使用Python): SooMain.py 如果name==“main”: SooServer.py class SooServer(So

我正在使用TCP套接字进行通信

工作时,出现了一个问题

  • 客户端无法生成“套接字”实例
  • 奇怪的是(在使用Python的服务器中)

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

这是我的环境

  • 服务器:Python
  • 客户端:Java/许多用户将尝试连接
服务器代码(使用Python):

  • SooMain.py

    如果name==“main”:

  • 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"
    
    class-SooServer(SocketServer.TCPServer):
    “这是Project201201的服务器”
    定义初始化(自我,
    host='localhost',
    端口=端口调试,
    handler=sooorequesthandler):
    #SocketServer.threadingcpserver.\uuuu init\uuuu(self,(主机,端口),处理程序)
    TCPServer.\uuuu init\uuuuu(self,(主机,端口),处理程序)
    打印“SooServer\uuuuu init\uuuuuuuuuu”
    self.abort=0
    self.timeout=10
    def关闭(自):
    SocketServer.ThreadingCPServer.shutdown(自)
    打印“服务器关闭”
    
  • 客户端代码(使用Java):

  • 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();
        }   
      }
    }
    
    公共类TestJava{
    公共静态void main(字符串[]args)引发异常{
    //TODO自动生成的方法存根
    试一试{
    字符串[]数据={
    “测试”,
    “测试”};
    InetAddress m_oInetAddr=InetAddress.getByName(DEBUG_ADDR);
    Socket m_oSocket=新套接字(m_oInetAddr,DEBUG_PORT);//这一行例外!!!!!
    打印输出=
    新印刷作家(
    新缓冲写入程序(
    新的OutputStreamWriter(m_oSocket.getOutputStream()),true);
    int nNumData=astdata.length;
    out.println(Integer.toString(nNumData));
    
    对于(int i=0;i而言,问题可能是您的服务未在该端口上运行,或者可能是其他应用程序已在使用该服务,因为

    This exception usually means that there is no service listening to
    the port you are attempting to connect to.
    
    检查以下事项

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

    我的服务器正在运行。1.因为在Ubuntu上使用“netstat-ntlp”命令时,我可以使用“PORT_DEBUG”找到服务2.因为在使用客户端(这是Phython编写的)进行测试时,客户端操作正常。我猜这个问题与“SocketServer.TCPServer”生成的“Socket”实例有关实例。我很困惑…帮帮我。可能它被其他应用程序使用了。可能这会帮助您,可能在服务器中,远程计算机被拒绝连接。检查服务器中的操作系统允许什么。
    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)
    
    This exception usually means that there is no service listening to
    the port you are attempting to connect to.