编程语言
首页 > 编程语言> > 套接字编程:发送和读取的异步方法可以确保数据顺序吗?

套接字编程:发送和读取的异步方法可以确保数据顺序吗?

作者:互联网

如果我连续调用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