以下是我需要在Java中实现的用例:
我上一步有问题,因为我不知道如何关闭服务器站点的连接。我目前的代码是吼叫。如何启动连接关闭TCP握手表单服务器站点?谢谢你的帮助。
public class Server{
public static void main(String[] args) throws Exception {
while (true) {
int port = AppConfig.getInstance().getPort();
try (ServerSocket socket = new ServerSocket(port)) {
Socket server = socket.accept();
InetAddress ipAddress = server.getInetAddress();
MessageHandler handler = new MessageHandler(ipAddress);
InputStream in = server.getInputStream();
// reads all bytes from input stream and process them by given handler
processStream(in, handler);
in.close();
server.close();
} catch (Exception e) {
LoggingUtils.logException(e);
}
}
}
private static void processStream(InputStream in, MessageHandler handler) throws Exception {
// implementation is omitted
}
}
答案 0 :(得分:1)
你已经完成了。 in.close()
关闭输入流,套接字输出流和套接字。
你应该关闭的是输出流连接到套接字的任何内容,以确保它被刷新,你应该在processStream()
方法中执行此操作,并在server .close()
中使用finally
{1}}阻止调用方法。
注意你的套接字名称确实是错误的。习惯使用ServerSocket serverSocket
和Socket socket = serverSocket.accept()
。
答案 1 :(得分:0)
我可能不完全确定这个,但我相信socket.close()会发送所有命令(FIN / FIN-ACK)