如果我有两个相互了解的客户端(即,它们知道要使用哪些端口和它们各自的主机名),它们可以使用套接字相互连接吗?
我知道一个可以作为服务器运行,一个可以作为客户端运行,但它们都可以是客户端吗?两个客户端都不在路由器或防火墙后面,并且每个客户端都有一个唯一的 IP。
我也在使用 Java,所以我正在考虑在两个客户端上使用两个 Socket 实例,而不是在一个客户端上使用 ServerSocket,在另一个客户端上使用 Socket。
最佳答案
有人需要在某处监听连接。标准套接字连接连接到主机和端口,在该主机和端口上有一个 Activity 监听器(标准 Java 套接字的 ServerSocket)。默认情况下,ServerSocket 会阻塞,等待传入连接。
如果您要在两个客户端上添加一个 ServerSocket 连接,您可能希望一个线程监听连接而另一个线程尝试建立传出连接。有一些替代方案,例如使用 NIO,它允许您检查传入和传出连接而不会阻塞整个应用程序。
您也可以查看广播,但是,该解决方案也很复杂。
还有一个想法:根据您的要求,您总是可以考虑利用 P2P 框架,例如 JXTA。
关于java - 连接网络中的两个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434225/