C#Socket如何终止监听。

zpehome 2011-08-30 11:22:14
我现在在做一个类似于网络调试助手的软件,现在可以实现监听了,但是停止监听总是不能实现,每次都报错,各位大侠有没有解决的办法啊。请各位指教。。。
...全文
2470 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
米兔之凡 2012-05-09
  • 打赏
  • 举报
回复
报错鸟
yojinlin 2011-08-31
  • 打赏
  • 举报
回复
一、關閉所有 Client Socket。
二、關閉所有 Client 線程。
三、TcpListener.Stop();
zpehome 2011-08-30
  • 打赏
  • 举报
回复
各位大侠帮帮忙啊
fanglinxi 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zpehome 的回复:]

引用 8 楼 zyloveyrf 的回复:
try
{
hospitalTcpClient = hospitalTcpListener.AcceptTcpClient();
}
catch
{
hospitalTcpListener.Stop();
}

谢谢你的回答,我不太懂你的意思!我是在服务器端进行监听和断开监听的操作,就是做两个butten,一个是开始监听,一个是断开……
[/Quote]

当你按住“关闭”时,发送一个消息过去给Client。当然Client那边要开启一个时时监听的线程。
zpehome 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sp1234 的回复:]
如果你有异步的处理,记得为你的程序设置一个标记,例如

C# code
bool isClosing;
如果这个标记置为true,就不要再写数据了!
[/Quote]
我用的是同步的!
zpehome 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sp1234 的回复:]
如果你有异步的处理,记得为你的程序设置一个标记,例如

C# code
bool isClosing;
如果这个标记置为true,就不要再写数据了!
[/Quote]
谢谢您的回答。关键是我不知道问题在哪?我的目的很明确啊,就是我现在成功连接监听,现在要终止,close()方法用过了,可是不行!会报错。我想问下在终止监听的按钮单击事件里怎么加代码才能成功终止监听!不知道您明白我的意思没?
  • 打赏
  • 举报
回复
如果你有异步的处理,记得为你的程序设置一个标记,例如
bool isClosing;
如果这个标记置为true,就不要再写数据了!
krenyelang 2011-08-30
  • 打赏
  • 举报
回复
socket.close() ///关闭


  • 打赏
  • 举报
回复
Socket即使不Dispose,它被GC销毁时也会调用Dispose,从而自动关闭的。包括关闭异步监听。

lz你说的所谓“问题”还是具体一些吧。我可以判断什么“如何Close”之类的这些,都无法解决你的问题。搞清楚具体问题,才能解决问题。不要空洞地抛出个“如何终止监听”这个话,这不会有对症的解决办法。
love_4023 2011-08-30
  • 打赏
  • 举报
回复
一般来讲socket.close()就可以了,不过我现在用Async的,下载里面有很不错的源码。
chp845 2011-08-30
  • 打赏
  • 举报
回复
socket.close()
就可以了呀!!
萧炎 2011-08-30
  • 打赏
  • 举报
回复
如果LZ还是不理解+我Q 453367672
萧炎 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zpehome 的回复:]
引用 8 楼 zyloveyrf 的回复:
try
{
hospitalTcpClient = hospitalTcpListener.AcceptTcpClient();
}
catch
{
hospitalTcpListener.Stop();
}

谢谢你的回答,我不太懂你的意思!我是在服务器端进行监听和断开监听的操作,就是做两个butten,一个是开始监听,一个是断开监……
[/Quote]
hospitalTcpClient这个是TcpClient对象
hospitalTcpListener这个是监听端口的
hospitalTcpListener.Stop();这个是结束监听
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zpehome 的回复:]

引用 8 楼 zyloveyrf 的回复:
try
{
hospitalTcpClient = hospitalTcpListener.AcceptTcpClient();
}
catch
{
hospitalTcpListener.Stop();
}

谢谢你的回答,我不太懂你的意思!我是在服务器端进行监听和断开监听的操作,就是做两个butten,一个是开始监听,一个是断开……
[/Quote]

连接 与 关闭的 操作
zpehome 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zyloveyrf 的回复:]
try
{
hospitalTcpClient = hospitalTcpListener.AcceptTcpClient();
}
catch
{
hospitalTcpListener.Stop();
}
[/Quote]
谢谢你的回答,我不太懂你的意思!我是在服务器端进行监听和断开监听的操作,就是做两个butten,一个是开始监听,一个是断开监听。断开监听里的代码怎么写啊?
萧炎 2011-08-30
  • 打赏
  • 举报
回复
try
{
hospitalTcpClient = hospitalTcpListener.AcceptTcpClient();
}
catch
{
hospitalTcpListener.Stop();
}
zpehome 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lbq0801 的回复:]
用多線程
socket.close()
[/Quote]
能贴段代码吗?线程离得内容具体怎么写啊?
isjoe 2011-08-30
  • 打赏
  • 举报
回复
停止监听之前给所有的客户端或服务器端发送信息,告知退出。

另外停止出现也可能和线程有关,好好检查这部分代码
Kation 2011-08-30
  • 打赏
  • 举报
回复
Socket.Close()就可以了
我是用Async的
lbq0801 2011-08-30
  • 打赏
  • 举报
回复
用多線程
socket.close()

加载更多回复(2)

111,119

社区成员

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

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

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