2017-08-15 140 views
0

我正在學習Java中的套接字編程,並編寫了一個簡單的程序用於將客戶端服務器連接到本地主機上的套接字服務器。但是,每當我運行ClientServer程序時,都會給出連接錯誤:拒絕。未能將客戶端服務器連接到本地網絡

我附上了我編寫的客戶端代碼和服務器代碼,並附上了控制檯輸出。

package Classes; 

import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 

public class ClientSer { 

    /** 
    * @param args 
    * @throws IOException 
    * @throws UnknownHostException 
    */ 
    public static void main(String[] args) throws UnknownHostException, IOException { 
     // TODO Auto-generated method stub 

     Socket s = new Socket("localhost",1029); 
     OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream()); 

     String str = "tEST mESSAGE"; 

     os.write(str); 
     os.flush(); 
    } 
} 

這是服務器代碼:

package Classes; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class SocketSer { 
    public static void main(String args[]) throws Exception{ 
     ServerSocket ss = new ServerSocket(1029); 

     Socket s = ss.accept(); 

     BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 

     String str = br.readLine(); 
     System.out.print(str); 
    } 
} 

控制檯輸出:

Exception in thread "main" java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at Classes.ClientSer.main(ClientSer.java:18) 
+0

檢查防火牆配置以確保它不阻止端口1029 –

+0

客戶端嘗試將綁定到與無法工作的服務器相同的端口。另外,您的客戶端永遠不會嘗試連接到服務器。您的代碼沒有錯誤檢查,所以調試非常困難。 –

+0

端口1029上的'ServerSocket' _listens_。客戶端套接字使用可用的源端口將***綁定到端口1029。這裏沒有衝突。 –

回答

0

在服務器中,你知道它在聽什麼接口?

我會啓動服務器,然後使用telnet嘗試連接,而不是您的客戶端。您可能會發現服務器不在本地主機上偵聽。或者也許它正在監聽每個接口(127.0.0.1加上你的本地網絡)。我只是不知道我是否信任SocketServer(portNumber)。

我會考慮創建一個未綁定的SocketServer,然後使用socket.bind(),爲它提供一個由主機和端口構造的InetSocketAddress對象。

相關問題