java聊天客户端socket和服务器socket并发
因此,对于一个项目,我将在Netbeans IDE中使用Java制作一个点对点、两人聊天客户端
我的问题不完全是代码,更多的是关于结构和如何实现
我想做的是打开客户端,让一个ServerSocket
侦听试图使用Socket
从另一个客户端建立的任何连接(另一个客户端也应该有一个ServerSocket
)
因此,这两个客户端都有能力在客户端打开后接受连接,并有能力尝试建立连接
无论如何,问题是ServerSocket.Accept();
块(正确的术语?)程序一旦被调用,将一直运行到超时结束。我想要的是ServerSocket
只在后台侦听任何传入的连接,如果是,则连接它们,而不会在发生这种情况时完全禁用程序的功能(即用户能够自己启动连接)?
要做到这一点,我需要为ServerSocket
创建一个单独的线程,一旦建立了连接,它就会被终止
此外,一旦建立了连接,我如何让程序定期检查Socket
的输入流,以查看是否有来自其他客户端的传入消息
有没有一种方法可以在一个线程中实现这一点?(我还没有真正深入研究线程)
如果这有点宽泛,我很抱歉
非常感谢
# 1 楼答案
ServerSocket块就是这样
但是,如果您只想在两个连接方之间进行点对点通信,那么这种行为就不是问题。您只需要两个程序:服务器和客户端。服务器阻塞,直到它从客户端获得连接;客户端阻塞,直到它获得连接
如果您想在单线程中实现JavaIO,您应该使用JavaNIO。互联网上有很多关于这方面的教程。例如http://tutorials.jenkov.com/java-nio/server-socket-channel.html
另外,您似乎不太熟悉网络和套接字,因此使用某些层而不是原始套接字可能是有益的
也许你应该考虑JeroMQ(https://github.com/zeromq/jeromq)来实现程序间的通信。