SOCKET 通信 停止SOCKET服务

sj13426074890 2009-12-03 11:01:54
rt

直接关闭套接字肯定不行
因为还有很多线程正在使用套接字
谁有什么好点的办法
O(∩_∩)O谢谢
...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenf 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sj13426074890 的回复:]
我的意思是服务器不再提供任何服务

一开始连接上的socket也不能通信


[/Quote]
那你只能关闭之前的socket,并关闭服务器的socket。
csgdseed 2009-12-03
  • 打赏
  • 举报
回复
把已连接的socket关闭
再关闭服务器监听的socket
sj13426074890 2009-12-03
  • 打赏
  • 举报
回复
我的程序 流程是
首先创建一个listen线程 监听客户端的请求
来一个客户我就创建一个接受数据的线程和他通信

现在我想的是关闭服务器
不再监听客户端的请求
也不与已经连接上的客户端通信


我应该怎么办?O(∩_∩)O谢谢
sj13426074890 2009-12-03
  • 打赏
  • 举报
回复
我的意思是服务器不再提供任何服务

一开始连接上的socket也不能通信

sj13426074890 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sixbusy 的回复:]
你应该 保存着 已经连接上的client 的 socket 吧!
先用 你的线程 把 他们 关闭了!
然后 退出 你的线程!
在 关闭 你的socket 服务的socket 。

如果 你只想 关闭 你的socket 服务的socket ,而 不关闭  已经连接上的client 的 socket ,
那你 直接 退出 Accpet 线程 就可以了!

反正是怎么样 你都必须 在退出 你的主线程以前 , “可控制的” 退出 子线程!
“可控制的”就是完成资源的释放 ,句柄的关闭等等!

[/Quote]

那我关闭那些已经连接上的client socket
我接收线程还在接收 这样会不会错呀
karl_max 2009-12-03
  • 打赏
  • 举报
回复
我想这可能是一下多线程同步的问题。
如果有多于一个的线程在使用同一个socket的话
1. 通过向线程发送消息,或设置线程间通讯变量的方法,将每一个线程对socket的操作都停止。
2. 在主线程中将socket close掉。
sj13426074890 2009-12-03
  • 打赏
  • 举报
回复
我的意思是停止服务器后

客户端发送连接和发送数据就会失败
sixbusy 2009-12-03
  • 打赏
  • 举报
回复
你应该 保存着 已经连接上的client 的 socket 吧!
先用 你的线程 把 他们 关闭了!
然后 退出 你的线程!
在 关闭 你的socket 服务的socket 。

如果 你只想 关闭 你的socket 服务的socket ,而 不关闭 已经连接上的client 的 socket ,
那你 直接 退出 Accpet 线程 就可以了!

反正是怎么样 你都必须 在退出 你的主线程以前 , “可控制的” 退出 子线程!
“可控制的”就是完成资源的释放 ,句柄的关闭等等!
jenf 2009-12-03
  • 打赏
  • 举报
回复
你想停止什么服务?
不再接受客户端的连接?如果是的话,那么当你接受到连接的时候就丢弃,并立即关闭该连接;
不再给客户端发送数据?如果是的话,你就别发了;
不再接收客户端的数据?如果是的话,将接收到的数据丢弃。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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