当前位置: 首页 > 面试题库 >

Java套接字支持全双工吗?

堵德曜
2023-03-14
问题内容

是否可以让一个线程写入OutputStreamJava的线程Socket,而另一个InputStream线程从套接字的线程读取,而不必在套接字上同步线程?


问题答案:

当然。您所描述的确切情况应该不是问题(同时读写)。

通常,如果没有要读取的内容,则读取线程将阻塞,并且如果指定了超时,则读取操作可能会超时。

由于输入流和输出流是Socket中的单独对象,因此您可能要担心的唯一问题是,如果有两个线程试图同时读取或写入(两个线程,相同的输入/输出流),该怎么办?时间?InputStream
/ OutputStream类的读/写方法不同步。但是,如果使用的是InputStream /
OutputStream的子类,则可能会同步正在调用的读取/写入方法。您可以检查javadoc中是否有要调用的类/方法,并很快找到它。



 类似资料:
  • 问题内容: 有没有一种方法可以直接从Erlang访问UNIX域套接字(例如/ var / run / dbus / system_bus_socket), 而无 需借助第三方驱动程序? 问题答案: Erlang / OTP仅带有用于tcp和udp套接字的驱动程序。所以… 没有。 第三方驱动 http://jungerl.sourceforge.net/中的 unixdom_drv 源代码树驱动程序

  • 我一直在思考为什么JDBC只是阻塞操作,为什么我不能为假设的事件处理程序onResultSetArrived(ResultSet rs)设置一些侦听器。为什么我必须为每个JDBC查询阻塞一个线程。 过了一段时间,我深入研究了Java套接字(我想JDBC是构建在它们之上的),并意识到也没有任何事件处理。提供非阻塞读取的唯一选项是通过available()方法,但这非常低效,因为必须在循环中定期检查它

  • 问题内容: 如果我有多个Java线程同时写入同一Socket实例,这会影响从同一套接字读取的对象的完整性吗?即,对象的内容是否会被弄乱等等。对象的顺序可以是随机的。 问题答案: 通常,没有任何保证。一点点不同的对象很可能最终会在电线上交错,使结果难以辨认。 因此,您需要提供外部同步。 有趣的是,即使在OS级别进行单个套接字写入也不一定是原子操作。有关进一步的讨论,请参见注意sendmsg()系列函

  • 我有一个gpu-server服务器-a在办公室。访问该服务器的唯一方法是通过办公室有线网络。该办公室提供代理服务器Server-B。我如何连接到服务器-B?我首先登录Server-B,然后在Server-B的bash中登录Server-A。我想使用vscode远程扩展为Server-A工作。我该怎么办?我现在可以用vscode连接到服务器-B。

  • 问题内容: 寻找Web套接字实现的Hello World类型示例: 这是来自php.net的Socket Create参考,但这看起来比Web Sockets更底层。 我想使用caniuse.com上显示的Web套接字,该套接字现在已在所有新的主要浏览器中实现。 Google搜索打开了这个Nets.TutsPlus网站,在其中可以使用JavaScript示例代码…但是我需要知道如何在PHP中实现服

  • 我最近一直在玩套接字,但是我遇到了一个问题…当我从服务器接收数据时,我得到一个“java.net.套接字异常:套接字关闭”异常。我没有在任何地方关闭套接字,事实上,我唯一使用关闭()的地方是扫描仪上从System.in读取文本; 以下是我的代码: 客户: 服务器: 数据包发送者: 客户端接收器: 数据包接收器: