java - 服务器和客户端之间的多个套接字

标签 java sockets

我有一个java服务器应用程序,它通过SocketChannel与多个客户端进行通信。在此 channel 上,客户端发送请求,服务器发送应答。现在我想添加服务器可以将文件发送到客户端的功能。我不想通过我用于通信的套接字发送它,所以在一个客户端和一台服务器之间拥有更多套接字是个好主意吗?如果是的话如何处理?我用过这样的东西吗?

SocketChannel socket = serverSocket.accept()
if(!addressSet.contains(socket.address)) {
    it is comunicate socket
}
else {
    it is date transfer socket
}

或者有更好的方法吗?

最佳答案

接受客户端连接后,在随机端口上创建一个新的 ServerSocket,然后告诉他该端口号。然后他应该将其作为数据连接进行连接。然后,让服务器接受来自它的一个连接,最好是来自他的连接,然后关闭该 ServerSocket。它并非万无一失,但相当强大。

关于java - 服务器和客户端之间的多个套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23070062/

相关文章:

sockets - 异步接收可以返回而不读取我要求的所有字节吗?

c - C 中的套接字编程无法在两台不同的 PC 上运行

java - 使用 Putty、Gradle 和 Gradle Git 插件时如何修复 "incompatible JNA native library"?

java - 返回错误的值,但在系统中读取正常? java

java - 无法在 Rational application Developer 8 中启动 websphere server 8

sockets - 如何在非阻塞套接字上设置发送超时?

c - 如果我用一个监听套接字监听 2 个端口,我如何知道哪个端口收到了数据包?

php - 在 HandlerSocket 上基于原始套接字的查询中表示 NULL 键值的正确方法

java - 用线程获取素数。如何划分区间?

java - 使用谷歌分析 Android 桌面应用程序