请教一下大家,我用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个字节,就能直接读出来呢?
public IAsyncResult BeginReceive(
byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
AsyncCallback callback,
Object state
)是不是size的问题?发送端间隔50ms发100个字节,接收方size大于100,每次读出来的字节数都大于100.
有没办法发送端50ms发100个字节,接收方接收完100个字节,就能直接读出来呢?
解决及时发送问题: 设TcpClient.LingerState。
这个就应该可以解决你的问题了。
我的意思是能不能服务器一起接受到数据,就马上报告上层,可以读出来处理了!用NO_DELAY设置好像不行!