![]() |
1
3
我会用
|
![]() |
2
2
我就是这么做的。通常需要知道内容长度,以知道何时结束数据存储循环。如果您的协议不发送期望作为报头的数据量,那么它应该发送一些标记来表示传输结束。 dataavailable属性只是表示如果现在有数据要从套接字中读取,它不知道(也不知道)是否有更多的数据要发送。要检查套接字是否仍然打开,可以测试stream_u.socket.connected&stream_u.socket是否可读。
|
![]() |
3
1
不确定在.NET中是如何工作的,但是在大多数环境中,当连接关闭时,我在read()中工作的返回0字节。所以你会做一些类似的事情: char buffer[4096]; int num_read; while ( num_read = src.Read(sizeof(buffer)) > 0 ) { dst.Write(buffer, num_read); } |
![]() |
4
1
问题的根源在于这一行:
dataavailable仅仅意味着流缓冲区中有数据可以读取和处理。它不能保证河流的“终点”已经到达。特别是,如果传输过程中有任何停顿,或者如果发送者比您的读卡器慢,那么可用数据可能是假的。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |