如何关闭socket 100分

paopaopao 2005-04-30 10:03:57
启动按钮代码
serverThread = new Thread(new ThreadStart(StartListen));
serverThread.Start();

#region 开始监听端口
public void StartListen()
{
if(ListenSoc==null)
{
int nPort = Convert.ToInt32(port_textbox.Text);
IPEndPoint ipLocalEndPoint;
IPAddress ipAddress = IPAddress.Parse(serverIP.Text);
ipLocalEndPoint = new IPEndPoint(ipAddress, nPort);
try
{
ListenSoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp );
ListenSoc.Bind(ipLocalEndPoint);
ListenSoc.Listen(10);
if(!LisStop) ListenSoc.BeginAccept(new AsyncCallback(AcceptCallback),null);
}
catch(Exception err)
{
this.Close();
return;
}
}
}
我想断开所有连接到我的机子的机子,可是用shutdown和close不管用,怎么样断开呢
...全文
376 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
小贵子88 2005-05-16
  • 打赏
  • 举报
回复
呵呵,楼主的问题还没解决啊。
不知道你Server端的程序是不是这样的,每个客户端连上以后,在Server端都专门开一个线程处理该客户端的数据传输等等,在关socket时,这个线程还在继续活动,没有关掉。如果是这样的话,关闭socket时把这些线程也都强行退出,应该就行了。
paopaopao 2005-05-08
  • 打赏
  • 举报
回复
根本没有关闭监听socket,shutdown和close只能使以后要连接的客户端不能连接,但是却不能关闭已经连接的socket,我查过csdn了,到底谁知道呀
tiaoci 2005-04-30
  • 打赏
  • 举报
回复
根本无需判断是否连接

if(conn_sock != null)
{
conn_sock.Shutdown();
conn_sock.Close();
}

这样就可以了
小贵子88 2005-04-30
  • 打赏
  • 举报
回复
Connected属性:获取一个值,该值指示 Socket 是否已连接到远程主机。所以,Server上的Connected为false,我想是这么回事。

serverThread.Abort();
socket.Shutdown(SocketShutdown.Both);
socket.Close();
应该关闭Socket了吧
qiezic 2005-04-30
  • 打赏
  • 举报
回复
把那个线程挂起行吗?
paopaopao 2005-04-30
  • 打赏
  • 举报
回复
我只是断开 按钮,并不是退出按钮
Application.Exit
是不行的
qiezic 2005-04-30
  • 打赏
  • 举报
回复

System.Environment.Exit(0);
Application.Exit
sdenli 2005-04-30
  • 打赏
  • 举报
回复
GZ
sdenli 2005-04-30
  • 打赏
  • 举报
回复
GZ
dyh0 2005-04-30
  • 打赏
  • 举报
回复
恐怕线程会出错,我也遇到这个问题,如何安全的关闭线程和SOCKET。
SeeSunSet 2005-04-30
  • 打赏
  • 举报
回复
实在不行就把线程KILL掉.
wjcking 2005-04-30
  • 打赏
  • 举报
回复
Abort();
luz331 2005-04-30
  • 打赏
  • 举报
回复
传输完后加上:
socket.Shutdown(SocketShutdown.Both);
socket.Close();
paopaopao 2005-04-30
  • 打赏
  • 举报
回复
serverThread.Abort();
正常
qiezic 2005-04-30
  • 打赏
  • 举报
回复
serverThread
这个线程能正常退出吗》?
paopaopao 2005-04-30
  • 打赏
  • 举报
回复
这是我的断开代码
CloseSocket(ListenSoc);
if(serverThread!=null) serverThread.Abort();
ListenSoc=null;
其中CloseSocket函数
public void CloseSocket(Socket conn_Sock)
{
if(conn_Sock.Connected) conn_Sock.Shutdown(SocketShutdown.Both);
conn_Sock.Close();
}
我判断if(conn_Sock.Connected)竟然为false;
paopaopao 2005-04-30
  • 打赏
  • 举报
回复
我都跟了,是false
qiezic 2005-04-30
  • 打赏
  • 举报
回复
你不妨把ListenSoc.connected的状态数出来看看
paopaopao 2005-04-30
  • 打赏
  • 举报
回复
根本就没有dispose这个函数
paopaopao 2005-04-30
  • 打赏
  • 举报
回复
我写的断开代码是
if(ListenSoc.connected)
判断结果竟然是false,可明明有连接的socket
加载更多回复(12)

110,533

社区成员

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

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

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