我正在制作一个java程序&我希望这是服务器和客户端(使用套接字)。如何最好地实现这一目标?
答案 0 :(得分:7)
如果您想要同时发送和接收数据,那么单个常规套接字(在每台计算机上)就可以了。请参阅Socket.getInputStream
和Socket.getOutputStream
。
通常的“服务器”/“客户端”区别只是归结为哪个主机正在侦听传入连接,以及哪些主机连接到这些主机。设置连接后,您可以从两端发送和接收。
如果您希望两台主机监听以获取传入连接,则只需设置ServerSocket
并在两台主机上调用accept
。
相关链接:
答案 1 :(得分:0)
如果您希望程序执行相同的操作,无论它是服务器还是某个连接的客户端,我都可以想象将客户端Socket
和ServerSocket.accept()
都交给我们socket以相同的方法进行处理。
答案 2 :(得分:0)
如果您希望每个电台都充当服务器和客户端,例如p2p聊天,
你应该用ServerSocket实现一个线程,监听传入的连接,一旦有了连接,打开一个新的线程来处理它,这样当前的线程就会继续监听新的连接。
为了能够连接到其他人,简单地使用SocketAddress和Socket,在不同的线程中尝试连接到指定的服务器地址(例如,通过用户的朋友列表)
你可以通过谷歌搜索找到大量的聊天示例。
欢呼声。
答案 3 :(得分:0)
查看jgroups它是一个允许创建进程组的库,其成员可以相互发送消息。另一种选择是使用hazelcast ...
您也可以查看this question。
答案 4 :(得分:-2)
执行此操作的最佳方法是在线程上运行服务器:
您运行server.accept()
因此,当您的程序正在侦听该线程上的连接时,您可以在主线程上执行任何操作,甚至可以连接到另一台服务器,从而使程序既是服务器又是服务器。客户。