我有一个java服务器应用程序,它通过SocketChannel
与多个客户端通信。在此通道上,客户端发送请求,服务器发送答案。现在我想添加服务器可以将文件发送到客户端的功能。我不想通过我用于通信的套接字发送它,所以在一个客户端和一个服务器之间有更多的套接字是个好主意吗?如果是,如何处理它们?我使用过这样的东西吗?
SocketChannel socket = serverSocket.accept()
if(!addressSet.contains(socket.address)) {
it is comunicate socket
}
else {
it is date transfer socket
}
还是有更好的方法吗?
答案 0 :(得分:2)
接受客户端连接后,在随机端口上创建一个新的ServerSocket,然后告诉他该端口号。然后他应该连接到那个作为数据连接。然后,让服务器接受来自它的一个连接,最好是来自他,然后关闭该ServerSocket。它并非万无一失,但它相当强大。
答案 1 :(得分:-1)
是的,有更好的方法。
使用ServerSocketChannel
和方法public abstract SocketChannel accept() throws IOException