socket无法释放问题,请大侠们帮忙看下

blackcat242 2010-09-14 07:17:25
加精
linux连接到ftp服务器,使用close关闭socket后,发现socket状态一直在CLOSE_WAIT,没有真正的释放掉这个句柄,请问是什么原因呢,还要如何才能释放掉呢?
...全文
6570 150 打赏 收藏 举报
写回复
150 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
SoyezCaime 2011-09-14
  • 打赏
  • 举报
回复
关注..
ningzhanma1227 2010-10-12
  • 打赏
  • 举报
回复
学习中
qq289258744 2010-09-26
  • 打赏
  • 举报
回复
看不懂哟!学习一下
YZGBProg 2010-09-25
  • 打赏
  • 举报
回复
好好学习!
haussuden 2010-09-25
  • 打赏
  • 举报
回复
学习了
tyler_wei 2010-09-25
  • 打赏
  • 举报
回复
学习了
ztw2010 2010-09-25
  • 打赏
  • 举报
回复
有事没事先顶一个
yearn520 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feiyinzilgd 的回复:]
楼主的意思是在本地close之后,本地socket出现CLOSE_WAIT

可能是由于本地socket的send的buffer数据还没发送完,所以推迟了close,这个时候服务器关闭了。出现clientCLOSE_WAIT状态。
[/Quote]
I_CAN_FLY_Y 2010-09-24
  • 打赏
  • 举报
回复
每次来都有收获
CGQXYC 2010-09-23
  • 打赏
  • 举报
回复
长见识了
lazuma 2010-09-23
  • 打赏
  • 举报
回复
建议你检查下程序close的时候的执行情况。我在调试Windows程序时候也出现过类似的问题,总是提示端口被占用,实际上就是程序没有彻底清理相应的资源。
algorithms_memo 2010-09-23
  • 打赏
  • 举报
回复
1. 在socket调用成功之后,connect调用之前设置可重用:

int foo = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &foo, sizeof(foo));


2. close前先执行shutdown:

shutdown(fd, SHUT_RDWR);


3. 调用close释放端口

close(fd);

山中岁月 2010-09-23
  • 打赏
  • 举报
回复
以前也遇过一个类似的问题,开始我的做法是服务器主动断开连接,结果出现了很多TIME_WAIT,导致客户端不能连接,后来修改了一下逻辑,改成客户端断开连接了,这样服务器上就没有TIME_WAIT了。目前程序可以使用。
但是还有个问题没有解决,都说用setopt把linger设置成0就没有TIME_WAIT了,但是我设置了linger后似乎没有作用。这个地方还有什么需要注意的吗?
手机写程序 2010-09-23
  • 打赏
  • 举报
回复
学习下!
IT修补匠 2010-09-21
  • 打赏
  • 举报
回复
新手学习
scorpiogoo 2010-09-21
  • 打赏
  • 举报
回复
没有最后收到握手信息,会处于等待状态
tutwo2 2010-09-21
  • 打赏
  • 举报
回复
拿着问他随便发,也不对号入座
[Quote=引用 54 楼 yu912264550 的回复:]
各位高手帮忙解下这个题, 已知某单位负反馈控制系统的开环传递函数为G(s)=k/s.*(s.^2+4*s+200)。利用MATLAB中的Simulink工具,绘制系统的结构图;并且在K取不同值时,分别绘制系统的阶跃响应曲线、冲激响应曲线以及斜坡输入响应曲线。
谢谢了
[/Quote]
sgy1996 2010-09-21
  • 打赏
  • 举报
回复
我也遇到这问题,学习了
renzhen333 2010-09-21
  • 打赏
  • 举报
回复
kanbudong a afdaf
huwei1587403 2010-09-20
  • 打赏
  • 举报
回复
关注一下 看看
加载更多回复(121)
发帖
Linux/Unix社区

2.2w+

社区成员

Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
帖子事件
创建了帖子
2010-09-14 07:17
社区公告
暂无公告