C# socket.Client.Receive(Rece); 如何判断有无接收数据,并正常执行。

Lee 2012-10-20 09:58:34
问题:
当服务器 端发送了一次 数据。
客户端执行了两次 接收。将产生异常。 但用Try 捕获不到。(估计内部发生死循环)

如何在执行 读取数据之前 进行判断,来避免这种情况?请高手给个方法。 谢谢!!

socket.Client.Receive(Rece);
...全文
1667 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lee 2012-10-20
  • 打赏
  • 举报
回复
我 是用一个按钮 测试 客户端接收 数据的
风一样的大叔 2012-10-20
  • 打赏
  • 举报
回复
客户端如果接受到两次数据,说明服务器端发送了两次,建议楼主好好查查代码
xiaoshisanlang1st 2012-10-20
  • 打赏
  • 举报
回复
我还是觉得对于IO操作,用异步方式会比较好,可以调用它的BeginRecive方法托个回调给它,然后就可以不用管了,如果有数据会调你给的回调,然后再EndRecive方法,结束这次异步,然后可以再次打开一个异步
Lee 2012-10-20
  • 打赏
  • 举报
回复
这个是我做的测试 代码。

        private void button2_Click(object sender, EventArgs e)
{
byte[] Rece = new byte[1024];

try
{


socket.Client.Receive(Rece);

string sRece = System.Text.ASCIIEncoding.ASCII.GetString(Rece);

listBox1.Items.Add(sRece);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


}
Kation 2012-10-20
  • 打赏
  • 举报
回复
你可以看下异步方法:
http://blog.csdn.net/zip_xg/article/details/8083809
使用异步,封装后,会有几个事件,比如接收数据事件、发送完成事件等
失落的神庙 2012-10-20
  • 打赏
  • 举报
回复
socket.Client.Receive(Rece);如果没接收到信息是不会往下进行的
你可以断点试试

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧