java - tcp socket 的 read 方法如何工作?

标签 java sockets tcp

目前我遇到一种情况,我想将输入流读取到只包含一个字节的字节数组。我重复执行此操作一定次数,以确保获得相应的字节长度。例如,40 个字节读取 40 次。但是在这个套接字的另一端,它在每个写入方法中写入512字节。(实际上在大多数情况下读取缓冲区是512字节,只是在特定条件下我一次读取一个字节)。我想知道在这种情况下发送套接字是否仍然每次都通过网络写入 512 个字节并且接收套接字接收所有这些并将它们存储在本地字节数组中并且读取方法每次从本地数组读取一个字节或者发送套接字每次也只写入 1 个字节?这个问题听起来有点困惑,希望我说清楚了。非常感谢任何帮助!

最佳答案

它会阻塞,直到内核的套接字接收缓冲区中有一些数据可用,然后传输尽可能多的可用字节。

关于java - tcp socket 的 read 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336929/

相关文章:

java - 访问 Java 类的静态字段时出现问题

java - 当一个对象被取消引用但它的成员对象仍然被引用时会发生什么?

sockets - Nginx +瘦套接字权限错误==错误的网关

tcp - Ethereal 转储中的 TSV 和 TSER 字段是什么意思?

java - 如何删除双链表中的特定条目?

Java Syntettica 外观

c - C中的套接字编程 - 让浏览器丢弃已发送的消息

c - socket - close(2) 发送 RST 数据包而不是 FIN 数据包

c - tcp 套接字读取调用如何永远不会返回

C 套接字编程 - 连接到外部源