我在Windows中使用多线程IOCP服务器。为了避免处理很多未决的读取,我在每个连接的套接字上始终只有一个wsarecv
操作。总之我的设计是这样的:当没有wsarecv时,输入数据会发生什么
- 客户端连接后,
wsarecv
是在连接插座贴 - 在执行
wsarecv
,数据处理连线和wsasend
张贴在同一插座上 - 时
wsasend
从第2步完成(GQCS获得通知),wsarecv
重新贴。
这意味着在步骤2和步骤3之间只有一小段时间,当没有挂起的wsarecv正在等待客户端数据时,它可以在任何时候出现。
是这种情况,我应该担心或者我可以假设,如果数据会在这个特定的时间内到达,它将被存储在某种内部缓冲区中,并从步骤3中的wsarecv
那里获取张贴?
thx寻求帮助。
TCP或UDP?在任何一种情况下,它都会被缓冲,在UDP的情况下,如果缓冲时间过长(随着更多数据的进入),它可能会被丢弃。 – Chad
@乍得,它是TCP。 – maciekm
@maciekm考虑在标题,文本和标签中添加它的tcp信息 –