C# 为什么插座是';s可用>;0刚刚从AcceptSync()返回?

C# 为什么插座是';s可用>;0刚刚从AcceptSync()返回?,c#,sockets,C#,Sockets,我在使用.NET高性能套接字时遇到了这个奇怪的问题。 就在我通过acceptsync()op获得一个新套接字之后,这个[Available]属性就等于一些非零值,通常是64。仔细看,我可以看到套接字缓冲区中所有可用字节的值都设置为0 在客户端,运行的唯一操作是ConnectAsync()。没有SendAsync(),没有任何内容 这与Nagle的启用状态有关 有人遇到过这个问题吗 注:如果需要,我会更新并发布一些代码,但这是一个很大的片段。我会自己回答这个问题 客户端用于连接到服务器的Socke

我在使用.NET高性能套接字时遇到了这个奇怪的问题。 就在我通过acceptsync()op获得一个新套接字之后,这个[Available]属性就等于一些非零值,通常是64。仔细看,我可以看到套接字缓冲区中所有可用字节的值都设置为0

在客户端,运行的唯一操作是ConnectAsync()。没有SendAsync(),没有任何内容

这与Nagle的启用状态有关

有人遇到过这个问题吗


注:如果需要,我会更新并发布一些代码,但这是一个很大的片段。

我会自己回答这个问题

客户端用于连接到服务器的SocketAsyncEventArgs实例的[Count]属性(SAEA共享缓冲区中设置的字节数)大于0。实际上,客户端启动的ConnectAsync()操作将触发AcceptSync()的I/O回调,并在服务器上调用一个等于所述[Count]值的[ByTestTransfered]值(实际上是“一次连接并发送设置的缓冲区”)