我收到以下錯誤,當我的客戶端試圖連接到我的服務器套接字:Java的網絡:連接被拒絕 - 是的,我的服務器運行
java.net.ConnectException: Connection refused: connect
不過,我的服務器真正在運行,在同機。我嘗試使用路由器的外部IP連接到它。但是,當我嘗試連接"localhost"
時,它工作。而且,是的,我在我的路由器中進行了端口轉發。即使canyouseeme.org
可以連接到我的服務器(該網站上說:「成功」,並在我的服務器日誌中顯示有人連接到服務器。)
因此,是不是因爲某種原因無法連接到同一臺機器(或到同一網絡中的機器)通過外部IP?或者這是Windows的典型特徵? (通常,我使用Linux)
我也嘗試完全禁用Windows防火牆。
的ServerSocket:
public ServerSocket ssocket;
public List<ClientHandler> handlers;
public Server(int port) { // Constructor
try {
ssocket = new ServerSocket(port);
this.handlers = new ArrayList<ClientHandler>();
IpSharingManager.uploadData(Utilities.getPublicIp(), port);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
客戶:
public InvisibleClient(String host, int port) {
try {
System.out.println("Trying to connect to " + host + ":" + port);
this.host = host;
this.socket = new Socket(host, port);
this.bis = new BufferedInputStream(this.socket.getInputStream());
this.bos = new BufferedOutputStream(this.socket.getOutputStream());
this.console = new RemoteConsole(this.socket);
initializeCommunication();
System.out.println("Successfully connected!");
new Thread(this, "Client Thread").start();
} catch (Exception e) {
e.printStackTrace();
System.out.println("No server available");
}
}
感謝
假設你正在編寫一個TCP服務器,你能夠telnet到你的服務器嗎?試試:telnet localhost <端口號服務器> – gawi 2010-08-30 16:20:17
你正在運行哪個服務器? – 2010-08-30 16:21:25
@gawi:我正在運行Windows ... – 2010-08-30 16:21:51