【发布时间】:2013-06-18 06:40:43
【问题描述】:
因此,对于一个项目,我正在使用 Netbeans IDE 中的 Java 制作一个点对点的两人聊天客户端。
我的问题不完全是代码,而是更多关于结构和如何实现的问题。
我想要做的是让客户端打开并让ServerSocket 监听任何尝试使用Socket 从另一个客户端建立的连接(这个另一个客户端也应该有一个ServerSocket)
所以这个想法是,一旦客户端打开,两个客户端都有能力接受连接,并有能力尝试建立连接。
无论如何,问题是ServerSocket.Accept(); 阻塞(正确的术语?)程序一旦被调用,直到超时结束。我想要的是ServerSocket 只是在后台侦听任何传入连接并在出现这种情况时连接它们,而不会完全禁用程序的功能(即用户能够自己启动连接)?
为此,我是否需要为ServerSocket 创建一个单独的线程,一旦建立连接就会被终止?
另外,一旦建立连接,我如何让程序定期检查Socket 的输入流以查看是否有来自其他客户端的任何传入消息?
有没有办法在一个线程中实现这一点? (我还没有真正深入研究线程)
对不起,如果这有点宽泛。
非常感谢!!
【问题讨论】:
-
不要害怕使用多个线程。只要你用 Swing 或 AWT 做某事,你就会有多个线程。所以不要从线程“逃跑” - 尝试“驯服”它们......
-
你能指出我解释线程的地方吗?我认为这是在这里做我想做的事情的最佳方式。
-
我1997年用来学习的教程已经不在网上了。我将不得不再次搜索网络。 Angelika Langer 和 Lars Vogel 的页面是搜索 Java 相关信息和教程的良好开端。
标签: java multithreading sockets serversocket