免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6077 | 回复: 3
打印 上一主题 下一主题

linux_C_SOCKET长连接编程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-03 12:59 |只看该作者 |倒序浏览
本帖最后由 mryzy 于 2010-09-03 13:01 编辑

linux_C_SOCKET长连接编程遇到如下问题,希望大家的指点及帮助!

1、 服务端如果主动关闭,造成N多TIME_WAIT,这些TIME_WAIT很快可失放。但客户端再次连接时失败或不能接收发送数据。
2、 服务端如果被动关闭,造成N多CLOSEE_WAIT,这些CLOSEE_WAIT不能失放或很久才失放。客户端再次连接时能接收发送数据。但资源很快耗尽,需要启起服务。
3、 短连接没有问题。

以上问题用FORK或SELECT方式都一样,也尝试加上setsockopt来进行控制,结果一样。望熟悉这方面编程的给予指点,谢谢!

论坛徽章:
0
2 [报告]
发表于 2010-09-03 13:03 |只看该作者
lz socket逻辑模型没看懂

论坛徽章:
0
3 [报告]
发表于 2010-09-04 22:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2010-09-06 10:33 |只看该作者
自己解决了!
int closesocket(int fd)
{
char tmp[2];
        memset(tmp,'\0',sizeof(tmp));
        while(1) {
                if(read(fd,tmp,1)<=0) break;
                if(write(fd,tmp,1)<=0) break;
        }
        shutdown(fd,SHUT_RDWR);
        close(fd);
        return(0);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP