gpt4 book ai didi

java - 无法通过套接字连接到linux机器

转载 作者:太空宇宙 更新时间:2023-11-04 12:42:30 24 4
gpt4 key购买 nike

我有一台运行在装有 centos 7 的 linux 机器上的服务器。在机器上,我运行一个代码来管理客户端与服务器的连接。这是我的代码:

public class ServerMain_mng {
final static int nPort = 3333;

public static void main(String[] args) throws IOException {
new ServerMain_mng();
}

public ServerMain_mng(){
try {
ServerSocket sSocket = new ServerSocket(3333);
System.out.println("Server started at: " + new Date());
System.out.println("===============================================\n");

while(true) {
System.out.println("waiting for connection");
//Wait for a client to connect
Socket socket = sSocket.accept();
socket.setSoTimeout(30000);
//Create a new custom thread to handle the connection
ClientThread cT = new ClientThread(socket, nPort);
//Start the thread!
new Thread(cT).start();
}
}
catch(IOException ex) {ex.printStackTrace();}
}}

问题是当客户端尝试连接到服务器时,代码没有通过 Socket socket = sSocket.accept(); 行。

我应该注意到,我在我的笔记本电脑上运行相同的代码,从本地主机作为客户端连接并且工作正常。我检查了路由器中的端口转发,指定的端口是打开的。

可能是什么问题?任何想法如何解决它?任何帮助将不胜感激。

最佳答案

sSocket.accept() 是一个阻塞调用,它应该保持阻塞直到一些客户端使用它正在监听的相同端口连接到它。

 public class Client {
final static int nPort = 3333;
public static void main(String[] args) throws IOException {
Socket sock=new Socket(IP of Server, nPort)
System.out.println("connected to: +sock.getRemoteSocketAddress())
//send additional data needed for the server using the socket's outputputStream
}
}

在服务器上,

 ClientThread cT = new ClientThread(socket);
//Start the thread!
new Thread(cT).start();

关于java - 无法通过套接字连接到linux机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39721157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com