C#的socket收发数据过程中,如何判断连接断开、收发方主动终止、发送错误、接收错误等状态

cq_lqj 2004-11-21 11:13:49
C#的socket的Poll在收发数据过程中,测试出的状态不好用
Connected的状态不是实时的
发送方抛出错误无法判断是接收方主动终止还是网络线路断开了
接收方更不行,就是网络线路断开或发送方主动终止都不会报错误

我看了看以前发的贴子,好象都没有好的办法,难道C#的socket这么弱?
用C++的socket开发,收、发方都能很好的判断出对方主动终止还是网络断开!

C#的高手们出来说说话!!!!!!!!!!!!!
...全文
1170 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbbword 2004-12-08
  • 打赏
  • 举报
回复
错误代码在:请参见 MSDN 中的 Windows Socket 2 版 API 错误代码文档。
我怎么找不到呢?
cq_lqj 2004-12-08
  • 打赏
  • 举报
回复
up
cq_lqj 2004-12-06
  • 打赏
  • 举报
回复
up
cq_lqj 2004-12-06
  • 打赏
  • 举报
回复
up
dyh0 2004-12-02
  • 打赏
  • 举报
回复
mark
xiaoslong 2004-11-30
  • 打赏
  • 举报
回复
帮你顶
cq_lqj 2004-11-30
  • 打赏
  • 举报
回复
up
cq_lqj 2004-11-29
  • 打赏
  • 举报
回复
up
yzh0523 2004-11-25
  • 打赏
  • 举报
回复
mark
cq_lqj 2004-11-25
  • 打赏
  • 举报
回复
up
cq_lqj 2004-11-25
  • 打赏
  • 举报
回复
up
singleflower 2004-11-24
  • 打赏
  • 举报
回复
catch(SocketException x){

if(x.ErrorCode == 10004){
}
}

我觉得这种方式最好,或者用个SWITCH,这样扩充性好,如果要扑捉新的错误,加个CASE很容易的
kgd198294 2004-11-24
  • 打赏
  • 举报
回复
有两种方法:
1:用try catch捕捉
2:设置好要接收数据的总长度,当数据接收完后。数据是否达到要求,如未达到要求,则可知道对方,半路中断
xiaoslong 2004-11-24
  • 打赏
  • 举报
回复
帮你顶
luncashcage 2004-11-24
  • 打赏
  • 举报
回复
这个代码写的确实有点乱。没空细心看的阿。
TigerSuper 2004-11-24
  • 打赏
  • 举报
回复
UP
cq_lqj 2004-11-24
  • 打赏
  • 举报
回复
楼上两位朋友,你们用socket编程传输文件没有?

用try catch捕捉,发送端没有问题的,对方主动终止或线路断开都会抛出错误的!可以很好的处理。
关键是接收端:当只接收了部分数据时,对方主动终止或线路断开, iNumByte=rBinarySocket.Receive(pBuf);不会抛出任何错误
如果这时线路断开它只有不停的循环接收。

while(uiTotal < uilength)
{
......
iNumByte=rBinarySocket.Receive(pBuf);
......
uiTotal+=iNumByte;
Thread.Sleep(1);
}
cq_lqj 2004-11-23
  • 打赏
  • 举报
回复
up
catman3000 2004-11-23
  • 打赏
  • 举报
回复
帮你顶
cq_luqinjian 2004-11-23
  • 打赏
  • 举报
回复
顶起不放
加载更多回复(9)

111,096

社区成员

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

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

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