首页 / JAVA / Java网络编程.关于插座的问题
Java网络编程.关于插座的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java网络编程.关于插座的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1660字,纯文字阅读大概需要3分钟。
内容图文
![Java网络编程.关于插座的问题](/upload/InfoBanner/zyjiaocheng/670/4ea585a4b7534a3e95daffae21fbefa2.jpg)
我有一台服务器,有2个客户端通过TCP连接到它.
这些客户端不断向服务器发送信息.
这是一个代理服务器,中继从客户端接收到的消息.
但是它必须交替中继消息.即来自客户端A的消息,然后是来自客户端B的消息,再是来自A然后是B的消息,依此类推.
我可以通过检查消息来自何处,然后交替中继消息并忽略来自同一客户端的连续消息来实现.
但是,如果任何客户端断开连接或未发送消息,我也不希望服务器陷入困境.
如果发生这种情况,代理将继续永远等待来自客户端的某些消息,该消息现在已断开连接(或由于某种原因未发送消息).在这种情况下,我希望服务器中继来自唯一连接的客户端的消息.
相反,我在考虑是否有可能这样做.如果我从同一客户端连续收到2条消息,我想检查是否读取了另一个客户端以向我发送消息.
我的问题是,是否可以从其他客户端的套接字检查是否有缓冲的消息并准备发送.
在这种情况下,可以忽略来自同一客户端的连续消息,而是先从另一个客户端发送该消息. (我已经检查过了.)
这可能吗?希望我已经清楚地问了这个问题.
谢谢
解决方法:
我正在这样阅读问题:
你有:
1台服务器
2位客户
您的服务器从客户端1和2获取消息并转发它们.
客户端是不同的生产者,这意味着它们发送的消息可能会有所不同.您想要的是来自客户端的消息以交替方式从服务器发送出去,但是如果客户端掉线则不“等待”.
在这种情况下,我建议您在服务器中有两个队列(client1queue和client2queue).
您将不得不从两个单独的线程中读取套接字,并在收到消息时将其添加到其相应的队列中.
client1Socket->客户1队列
client2Socket-> client2queue
然后,在第三个线程中,让服务器转发消息,并从client1queue和client2queue交替提取这些消息.
要解决队列为空时的“不等待”问题,只需跳过该队列的“转弯”即可.这样可以确保以最快的速度发送所有消息,同时仍能传递所有消息.缺点是,只有在准备好发送消息时,它才会交替出现.当然,您可以让它等待X数量,以查看是否有消息发送到另一个队列,但是我不明白为什么无论客户端状态如何,系统都应该工作,您为什么要这么做.
内容总结
以上是互联网集市为您收集整理的Java网络编程.关于插座的问题全部内容,希望文章能够帮你解决Java网络编程.关于插座的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。