我有时会遇到一个奇怪的问题。我有一个同步套接字,我可以连接并发送数据。
do
{
try
{
// blocking
int bytesRead = sender.Receive(bytesReceived);
// process the received bytes
}
catch (SocketException soex)
{
throw new Exception(String.Format("Socket exception..." +Environment.NewLine+"[Code: {0}] {1}",soex.ErrorCode,soex.Message));
}
}
while (sender.Poll(1500, SelectMode.SelectRead) && sender.Available > 0);
我不想永远留在 Receive 中,因为它是阻塞的,所以这就是为什么我提出一个轮询时间来等待数据包的响应,以便有时间进入线路,并且随着可用,我当没有更多真实数据时可能会中断。
我遇到的问题是,当 client.Available > 0 为 FALSE(它有字节)时(在 do-while 中)返回 false我得到一个号码。
任何想法?我很困惑。