注册 登录
编程论坛 C# 论坛

套接字关闭

huwengui 发布于 2014-12-21 11:38, 687 次点击
之前在使用套接字时经常弹框,报.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 编辑 ]
1 回复
#2
xydddaxia2014-12-22 20:34
要确保在关闭套接字前已发送和接收所有数据,应在调用 Disconnect/Close 方法前调用 Shutdown
Shutdown可以确定数据传成功没有
在连接状态,应当先关闭数据流,直接调用Close的话,需要等到数据传完了才会返回结果,程序会卡死。

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