有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java聊天客户端socket和服务器socket并发

因此,对于一个项目,我将在Netbeans IDE中使用Java制作一个点对点、两人聊天客户端

我的问题不完全是代码,更多的是关于结构和如何实现

我想做的是打开客户端,让一个ServerSocket侦听试图使用Socket从另一个客户端建立的任何连接(另一个客户端也应该有一个ServerSocket) 因此,这两个客户端都有能力在客户端打开后接受连接,并有能力尝试建立连接

无论如何,问题是ServerSocket.Accept();块(正确的术语?)程序一旦被调用,将一直运行到超时结束。我想要的是ServerSocket只在后台侦听任何传入的连接,如果是,则连接它们,而不会在发生这种情况时完全禁用程序的功能(即用户能够自己启动连接)? 要做到这一点,我需要为ServerSocket创建一个单独的线程,一旦建立了连接,它就会被终止

此外,一旦建立了连接,我如何让程序定期检查Socket的输入流,以查看是否有来自其他客户端的传入消息

有没有一种方法可以在一个线程中实现这一点?(我还没有真正深入研究线程)

如果这有点宽泛,我很抱歉

非常感谢


共 (1) 个答案

  1. # 1 楼答案

    ServerSocket块就是这样

    但是,如果您只想在两个连接方之间进行点对点通信,那么这种行为就不是问题。您只需要两个程序:服务器和客户端。服务器阻塞,直到它从客户端获得连接;客户端阻塞,直到它获得连接

    如果您想在单线程中实现JavaIO,您应该使用JavaNIO。互联网上有很多关于这方面的教程。例如http://tutorials.jenkov.com/java-nio/server-socket-channel.html

    另外,您似乎不太熟悉网络和套接字,因此使用某些层而不是原始套接字可能是有益的

    也许你应该考虑JeroMQ(https://github.com/zeromq/jeromq)来实现程序间的通信。