Java 与ARM的持久TCP连接
我正在尝试编写一个简单的TCP服务器,但问题是套接字在第一次运行后关闭(顺便说一下,它在线程中运行)。我可以尝试在没有ARM(自动资源管理)的情况下重写它,在Java 与ARM的持久TCP连接,java,tcp,Java,Tcp,我正在尝试编写一个简单的TCP服务器,但问题是套接字在第一次运行后关闭(顺便说一下,它在线程中运行)。我可以尝试在没有ARM(自动资源管理)的情况下重写它,在尝试之后,它会在圆形方块中移动,但我宁愿保留它 那么,有没有一种在Java中使用ARM编写简单持久TCP服务器的方法 public class Server { /* Server */ public int port = 8088; public Server (int port){ this.port = port;
尝试之后,它会在圆形方块中移动,但我宁愿保留它
那么,有没有一种在Java中使用ARM编写简单持久TCP服务器的方法
public class Server {
/* Server */
public int port = 8088;
public Server (int port){
this.port = port;
System.out.println("Will listen on port " + this.port);
}
public Server () {
System.out.println("Will listen on default port " + port);
}
public void start() {
try (ServerSocket initSocket = new ServerSocket(port);
Socket socket = initSocket.accept();
BufferedReader bfin =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedOutputStream bfout =
new BufferedOutputStream(socket.getOutputStream())
)
{
String line = bfin.readLine();
while (line != null && !"BYE\n".equals(line)){
String answer = parseadd(line) + "\n";
System.out.println("From client: " + line);
bfout.write(answer.getBytes());
bfout.write("BYE\n".getBytes());
bfout.flush();
line = bfin.readLine();
}
System.out.println("Exiting server while loop!");
}
catch (IOException e) {
System.out.println("Exception caught when trying to");
System.out.println(e.getMessage());
}
}
}
您需要一个循环调用accept()
,并启动一个线程来管理和关闭每个已接受的套接字,而不是将其作为资源试用来测试。请参阅Java自定义网络教程。所以,我不能使用ARM来实现这一点?