public static void main(String[] args) throws IOException { // 创建socket,绑定到65000端口 ServerSocket serverSocket = new ServerSocket(65000); // 循环用以监听 while (true) {// 这是多线程的,通过循环创建多个socket来实现 // 监听65000端口,直到有客户端信息发过来 Socket socket = serverSocket.accept(); // 执行相关操作\ TCPServer server = new TCPServer(); server.setupServer(65000); } } public void setupServer(int port) { try { ServerSocket ss = new ServerSocket(port); System.out.println("server have been started!"); while (true) { Socket sc = ss.accept(); System.out.println("have connected " + sc.getRemoteSocketAddress()); // 等待从客户端传过来的消息 // 调用处理连接来处理连接 communicationProcess(sc); } } catch (Exception e) { e.printStackTrace(); } }如何修改
时间: 2024-02-10 12:16:30 浏览: 68
实例分析Java中public static void main(String args[])是什么意思
你可以将两个while循环合并成一个,将监听端口和处理连接的操作放在同一个方法中,然后在main方法中直接调用该方法。修改后的代码如下:
```
public static void main(String[] args) throws IOException {
// 创建socket,绑定到65000端口
ServerSocket serverSocket = new ServerSocket(65000);
// 循环用以监听
while (true) {// 这是多线程的,通过循环创建多个socket来实现
// 监听65000端口,直到有客户端信息发过来
Socket socket = serverSocket.accept();
// 执行相关操作
setupServer(socket);
}
}
public static void setupServer(Socket socket) {
try {
System.out.println("server have been started!");
System.out.println("have connected " + socket.getRemoteSocketAddress());
// 等待从客户端传过来的消息
// 调用处理连接来处理连接
communicationProcess(socket);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void communicationProcess(Socket socket) throws IOException {
// 处理连接的代码
}
```
这样就可以通过一个方法来实现监听端口和处理连接的操作,并且可以直接将socket作为参数传递给该方法。
阅读全文