2011-10-21 23 views
2

這個問題是一個跟進這一個: BufferedReader readLine method hangs and block program插槽工作在命令行,但未能上搖擺

我現在有一臺服務器,並運行平穩客戶端,但後來我試圖執行一個GUI界面使用鞦韆。使用相同的代碼,套接字構造函數失敗。

我的班級是這樣的:從主函數調用時

public class TCPClient { 

    public BufferedWriter ostream = null; 
    public BufferedReader istream = null; 
    public TCPClient(String host, String port) throws UnknownHostException { 
    InetAddress ip = InetAddress.getByName(host); 

    try { 
     Socket socket = new Socket(host, Integer.parseInt(port)); 

     ostream = new BufferedWriter(socket.getOutputStream()); 
     istream = new BufferedReader(new InputStreamReader(socket.getInputStream())); 


    } catch (IOException ex) { 
     Logger.getLogger(TCPClient.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 

此代碼的工作非常完美。在揮杆,我有一個按鈕,調用以下方法:

private void enviarMsgTCP() throws IOException { 
    screenOutput.append("Sent:\n" + mensagem.getText() + "\n"); 
    if (client == null){ 
     try { 
      client = new TCPClient(destIp.getText(), port.getText()); 
     } catch (UnknownHostException ex) { 
      Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex); 
      saidaTexto.append("Não foi possível se conectar ao host.\n"); 
     } 
    } 

使用這種代碼,下面的線(在的TcpClient)拋出異常:

Socket socket = new Socket(host, Integer.parseInt(port)); 

異常堆棧跟蹤:

21/10/2011 21:44:42 cliente.ClienteTCP <init> 
GRAVE: null 
java.net.ConnectException: Connection refused: connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
at java.net.Socket.connect(Socket.java:529) 
at java.net.Socket.connect(Socket.java:478) 
at java.net.Socket.<init>(Socket.java:375) 
at java.net.Socket.<init>(Socket.java:218) 

它可能是什麼? thx再次

回答

2

拒絕連接意味着連接時沒有任何內容監聽您指定的IP:端口。

你怎麼還有DataOutputStream?

+0

噢,我粘貼了其他線程的代碼以節省一些時間。那是一個錯誤。關於這個問題,我讓服務器在監聽。我改變了我的主類,並嘗試,而不重新啓動服務器使用我的文本界面,它的工作原理。 –

+0

複製和粘貼是邪惡的。 –

相關問題