套接字编程:发送和读取的异步方法可以确保数据顺序吗?
作者:互联网
如果我连续调用c#异步方法,如下所示:
socket.BeginSend(data1, 0, data1.Length, 0,
new AsyncCallback(SendCallback1), handler);
socket.BeginSend(data2, 0, data2.Length, 0,
new AsyncCallback(SendCallback2), handler);
异步方法可以确保数据顺序吗?
其他支持异步操作的网络库是否考虑了此问题?
如何实现它们以保证内部异步操作中的数据顺序?
解决方法:
不,我不认为异步方法可以保证您要发送的数据将按顺序发送,调用或发送.
正如Marc所说的,即使它确实有效,这也不是正确的方法,您不应该并排调用两个BeginSend或一个接一个地调用.您可以做的是在第一个BeginSend的回调方法中调用EndSend,然后在该回调内部调用下一个BeginSend.
This是有关该主题的不错的MSDN文章,请先阅读,然后再继续
标签:begininvoke,send,sockets,asynchronous,c 来源: https://codeday.me/bug/20191208/2088800.html