说明
目标是让服务器在我的计算机上运行,而另一个人在另一个网络中的计算机上运行客户机
这应该使用 Socket
以及 ServerSocket
来自 java.net
Package 。
预期输出是服务器和客户端之间的连接
实际输出没有连接
源代码:
注意:提供了连接所需的最少代码量,去掉了不必要的打印/日志语句和其他代码,以使ui/应用程序按预期运行。
服务器.java:
class Server {
ServerSocket server;
Socket connection;
final int PORT = 0xface // random port
public static void main(String[] args) {
Server application = new Server(); // constructor is just for UI
application.runServer();
}
private runServer() {
server = new ServerSocket(PORT, 5);
connection = server.accept();
}
}
客户端.java
class Client {
String charServerAddress;
final int PORT = 0xface // random port, same as Server port
public static void main(String[] args) {
Client application = new Client(args[0]); // where args[0] is 127.0.0.1
application.runClient();
}
public Client(String host) {chatServerAddress = host;}
private runClient() {
client = new Socket(InetAddress.getByName(chatServerAddress), PORT);
}
}
结果
服务器正常运行,但客户端无法连接
在解决问题之前
客户端连接到localhost,即使用 127.0.0.1
作为论据 client = new Socket(InetAddress.getByName(chatServerAddress), PORT)
.
事情按预期进行;客户端可以连接到服务器。
客户端使用服务器的ip地址连接,服务器与客户端运行在同一台计算机上。我们输入了服务器的ip地址 ipconfig
,然后使用 IPv4 Address
.
事情按预期进行;客户端可以连接到服务器。
客户端使用服务器的ip地址连接,服务器和客户端在不同的机器上运行。我们得到了服务器的ip地址 ipconfig
,然后使用 IPv4 Address
.
问题:没有错误消息,但是客户端从未连接到服务器。
尝试的解决方案
在两台计算机上完全禁用windows防火墙。
切换哪台机器托管服务器,哪台是客户端。
使用不同的 PORT
号码。
通过打字将一台机器与另一台机器进行ping ping <IP Address>
在命令中。
以上所有操作都会导致相同的错误: connection timeout
.
暂无答案!
目前还没有任何答案,快来回答吧!