2012-09-27 96 views
1

我正在使用TCP套接字進行通信。Python服務器/ Java客戶端「連接被拒絕:連接」

工作時,一個問題出現了

  • 客戶端不能讓 '插座' 的實例。
  • 奇怪的一點是,(在使用Python服務器)

    使用Python中的 '窩' 類不會引起問題, 但是在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" 
    

客戶端代碼(使用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) 

回答

1

問題是可以被你的服務沒有在該端口上運行,或可能已經使用該服務,因爲......

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

檢查以下幾點一些其他的應用程序。

  • 主機名和端口你試圖連接是否正確
  • 服務器端監聽正確
  • 有沒有防火牆阻止連接
+0

我的服務器運行。 1.因爲在Ubuntu上使用「netstat -ntlp」Commnd時,我可以使用'PORT_DEBUG'找到服務 2.因爲使用客戶端測試(這是由Phython編寫的),客戶端正常運行 – Lyan

+0

我想這個問題是相關的到由「SocketServer.TCPServer」實例製作的「套接字」實例。 我很困惑...幫助我。 – Lyan

+0

可能會被其他應用程序使用。可能這會幫助你http://www.wireshark.org/ –

相關問題