java - 服务器与两个不同应用程序的套接字通信,Java

标签 java blocking serversocket

我正在为服务器编写代码,该服务器将帮助不同平台上的两个不同应用程序相互通信。为了形象化一点,它会是这样的:

应用程序1<------>服务器<------>应用程序2

服务器所做的就是从app2中读取var1,将其写入app1,然后从app1中读取var2并将其写入app2。像这样:

while(true){<br/> var1 = app2stream.readInt();<br/> app1stream.writeInt(var1);<br/> var2 = app1stream.readDouble();<br/> app2stream.writeDouble(var2);<br/> }

我的问题是,在某些时候我的服务器上有这个代码:

app1.accept();<br/> app2.accept();

这意味着无论如何,考虑到服务器始终在运行的事实,app1 应该是第一个连接的服务器,因为 app1.accept() 是一种阻塞方法。

有什么办法可以解决这个问题吗?如果允许两个应用程序连接到服务器,无论谁先“来”,然后等待服务器继续执行上述代码,那就太好了。我可以仅将线程用于accept() 部分,然后将流传递给另一个线程吗?我读了一些有关 channel 的内容,但有点困惑,任何例子都会很棒。

最佳答案

使用NIO

它允许您使用Selector类进行非阻塞套接字(包括accept)。

基本上,它为您提供了对系统库的更多 native 访问以及无需多线程即可处理任务的能力。

关于java - 服务器与两个不同应用程序的套接字通信,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5555247/

相关文章:

sockets - 使用多个套接字,非阻塞或选择阻塞会更好吗?

java - 如何创建仅在本地主机上服务的 Java Socket 对象?

java - 服务器套接字绑定(bind)到哪里?

flash - 如何在AIR ServerSocket的服务器端具有XMLSocket?

java - 使用 Java 将代理设置添加到 Microsoft Graph 客户端

java - 电子邮件发送 Java、Android

java - Android 后端技术 - 语言 (Java, Python) & IDE (CoderBuddy, exo Cloud, Cloud 9)

java - 如何通过SXSSF保护Excel工作簿?

Android RXJava 清理解决方案

Javascript 在页面期间阻止您网站上的内容下载