繁体   English   中英

C#TCP套接字,在“相同”时间(.NET CF)进行异步读写,如何?

[英]C# TCP socket, asynchronous read and write at the “same” time (.NET CF), how?

乍一看,在套接字级别使用异步方法时,从关联的网络流发送或接收数据或直接在套接字上“接收”数据应该没有问题。 但是,您可能已经知道了。

Windows Mobile平台和Compact Framework上特别突出了该问题。

, BeginReceive and the callback function which performs ends a pending asynchronous read for the received data (EndReceive) from the async. 我使用 ,BeginReceive和回调函数来结束从异步接收的数据(EndReceive)的挂起异步读取。 结果。

由于我需要不断从套接字接收数据,因此有一个循环等待数据。 当我要发送数据时,问题就开始了。 为此,在通过套接字发送一些数据之前,我使用EndReceive“强制”异步读取的两端。 ). 这有一个很大的延迟 (有时您不能等待此 )。 . 超时时间太长, 我不想关闭插座并重新连接。

我使用同步方法Send发送数据(尽管结果与异步方法BeginSend / EndSend相同)。 发送完成后,我再次开始接收数据。

我了解的资源:

(ErrorCode: 10036). PS:我尝试发送数据而没有结束异步接收,但随后出现SocketException: (错误代码:10036)。

提前致谢! 我希望,我不是一个人在这“一个小问题”

您是否考虑过使用轮询(或为多个套接字选择)而不是BeginReceive静态方法来检查是否有要读取的数据? 我认为这给您带来了麻烦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM