当前位置:编程学习 > C#/ASP.NET >>

SOCKET网络编程时异步数据响应

请教一下大家,我用SOCKET进行网络编程时,在异步模式下,使用的BeginReceive函数,如下。本来是想接收端接收到数据就马上反应,但是为什么会有延迟呢?总是等到接收到一定数据量的数据才有反应。
public IAsyncResult BeginReceive(
byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
AsyncCallback callback,
Object state
)

是不是size的问题?发送端间隔50ms发100个字节,接收方size大于100,每次读出来的字节数都大于100.
有没办法发送端50ms发100个字节,接收方接收完100个字节,就能直接读出来呢? --------------------编程问答-------------------- 请大家帮忙看看,谢谢! --------------------编程问答-------------------- TCP流,就像管道里的水一样,是没有分段的。因此分段要自己做。

解决分包问题: 可以先写包长度,再发包;相应的一方读包长度后,再拆包。
解决及时发送问题: 设TcpClient.LingerState。 --------------------编程问答-------------------- Server 的 Socket可以使用 BeginAccept,然后使用信号量等待,再BeginAccept的Callback 给发一个信号让Socket 再接收数据。
这个就应该可以解决你的问题了。 --------------------编程问答-------------------- 我有用分包,我的意思并不是他们结合在一起,不能分离。
我的意思是能不能服务器一起接受到数据,就马上报告上层,可以读出来处理了!用NO_DELAY设置好像不行! --------------------编程问答-------------------- 请大家再看看
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,