解决方案 »
- C# 读取xml文件问题 在线等
- 我的CellEndEdit事件处理程序怎么被调用了两次啊?
- 标签打印,二维码加文本 ,二维码正常,drawstring文本打印出来很模糊
- 开发的一个服务器常驻程序的修改问题
- 在DataGridView中如何用*来显示密码?
- 如何获取某一个月的第一天或者第一天是星期几
- 求助:TCPClient NetworkStream 使用问题
- 请大家帮我看看怎么写下面函数的函数体
- .net中C#制作Application,有没有ComboBox控件可以选本地硬盘C:D:E:等?
- 数据库操作。急救!!
- 数据写入到txt文件中
- SqlConnection conn;SqlCommand comm;SqlDataReader dr;如何反复使用?
你count如果等于1就一直等于1你循环里并没有对count进行过处理。
当然是死循环。 while (count>0)
{
Count = ClientSocket.Receive(buffer, buffer.Length, 0);
RecString = RecString + Encoding.ASCII.GetString(buffer, 0, Count);
count--;//循环一次减少一次。
}
ren都告诉你了,还找啥高人。如果Count大于1死循环呀。程序肯定当了
因为不清楚什么时候 会返回
所以不能用阻塞
既不是count--(这个操作真的太诡异了),也不是只有异步才能接收数据,更不是只要把这个代码放到线程里它就不死掉了(这个逻辑也特别诡异)。
while(count>0)可以改为while(ClientSocket.Avaliable>0)
其实我并不觉得你这里的代码有什么问题啊.关键是,你这个ClientSocket从哪儿来的?!
ClientSocket是个变量,引用一个Socket类型的对象实例,这还有其它可能性吗?
难道从服务器发送的数据不可能是0字节?我觉得应该是这样的吧:是我调用receive()方法从服务器接受数据,如果没数据返回的应该是0啊。怎么大家说的是反的,你们的意思是如果服务器没数据发送,我就不能调用这个方法?
Count = ClientSocket.Receive(buffer, buffer.Length, 0);
这句,注意,不会有count为0的状况发生,如果ClientSocket读取不到数据,.net的默认策略是一直让程序阻塞在这里,直到能缓冲区有数据可以读取。
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
while (bytes > 0);