标题:套接字关闭
只看楼主
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
结帖率:83.33%
已结贴  问题点数:20 回复次数:1 
套接字关闭
之前在使用套接字时经常弹框,报.net Framework错,程序直接崩溃!!!就是使用的第一种方法!!!
1.socket.shutdown(both)
  socket.disconnect();

2.socket.shutdown(both)
  socket.close();

3.lock(socket)
  socket.shutdown(both)
  socket.close();

其中disconnect 和close 的区别?以及lock(socket)用法?


哪种方法更优?

[ 本帖最后由 huwengui 于 2014-12-21 11:41 编辑 ]
2014-12-21 11:38
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
得分:20 
要确保在关闭套接字前已发送和接收所有数据,应在调用 Disconnect/Close 方法前调用 Shutdown
Shutdown可以确定数据传成功没有
在连接状态,应当先关闭数据流,直接调用Close的话,需要等到数据传完了才会返回结果,程序会卡死。

if(socket!=null)
{
   if(socket.Connected)
  {
     socket.shutdown(both);
  }
  else
  {
     socket.close();
  }
}

站在春哥的肩膀上
2014-12-22 20:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440198-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.373945 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved