我正在使用TCP连接在客户端和服务器程序之间来回发送数据。在下面的服务器代码中,我已经设置了服务器并使用listen方法来监听传入的连接。
private void initialiseServer() {
try {
serverSocket = new ServerSocket(22222, 8, InetAddress.getLocalHost());
System.out.println("Hosting server");
} catch (Exception e) {
e.printStackTrace();
}
playerone = false;
}
private void listenForServerRequest() {
try {
socket = serverSocket.accept();
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
accepted = true;
System.out.println("CLIENT HAS REQUESTED TO JOIN, ACCEPTED");
} catch (IOException e) {
e.printStackTrace();
}
}
当建立连接时,服务器应输出到其控制台“客户已请求加入,接受”。
以下是客户端套接字程序:
private boolean connect(String ip) {
try {
socket = new Socket(ip, 22222);
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
accepted = true;
} catch (IOException e) {
System.out.println("Unnable to connect to address");
return false;
}
System.out.println("Successfully connected");
return true;
}
连接时应输出“成功连接”。
当我使用运行客户端和服务器的单台计算机通过“localhost”作为IP连接到自身但是当尝试使用相同的互联网路由器连接到其他计算机时,客户端暂停约30秒尝试连接然后失败。
要确定客户端计算机放入connect方法的主机的IP,我使用ipv4,但我不确定这是否是正确的测试地址,或者是否还有其他内容我必须做的事情是通过套接字连接到某人。不幸的是,由于我没有2台设备随时可用,我只能经常测试它,因此更难以找到解决方案。任何建议将不胜感激!