socket启动后怎样才能清理干净

yinyu 2000-08-16 12:45:00
各位大侠好。
我做了一个socket服务程序,就是那种一个线程监听,连接后启动多个线程处理那种系统结构,处理完后用closesocket()关闭套接字。
现在的问题是,当服务关闭后再启动时,在bind监听套接字时返回SOCKET_ERROR,这时必须将监听套接字换为另外一个端口(或者重新启动机器),才能初始化成功,这样看,多半是上次退出后端口没有清理干净的缘故。
请有大虾指定可能从哪几方面查找原因,及程序修改方法
...全文
371 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
szjfang 2000-12-05
  • 打赏
  • 举报
回复
to jizy
我也遇到同样的问题,侦听的线程一直在accept等待中,即使把此线程Terminate,
并不能运行到closesocket这一句.
dandygirl 2000-12-03
  • 打赏
  • 举报
回复
我用的VB怎么解决同样的问题啊?
jizy 2000-09-30
  • 打赏
  • 举报
回复
用得着close监听的socket吗?建议你用下面这种结构:


SOCKET server = socket(...);
bind(...);
listen(...);

for(...)
{
SOCKET connection = accept(server, ...);
_beginthread(....);
..
}

closesocket(server);


kingwill 2000-08-18
  • 打赏
  • 举报
回复
好好看看书吧
net_worm 2000-08-17
  • 打赏
  • 举报
回复
把listen的那个socket关闭,也要把accept下来的socket关闭(是分别关闭)。今天刚刚碰到相同的问题。
sandy_wu 2000-08-16
  • 打赏
  • 举报
回复
WSACleanup()

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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