阅读HTRAN代码的疑惑.

dibotiger 2010-11-22 03:37:24
最近在看网络里开源的一个出名的端口转发和影射的HTRAN的代码:
链接:
http://liong.blog.51cto.com/374966/237901

基本的代码流程都可以阅读明白了,但是其中的一个代码片断让我实在疑惑不解:


void closeallfd()
{
int i;
printf("[+] Let me exit ......\r\n");
fflush(stdout);
for(i=3; i<256; i++)
{
closesocket(i);
}
if(fp != NULL)
{
fprintf(fp,"\r\n====== Exit ======\r\n");
fclose(fp);
}
printf("[+] All Right!\r\n");
}



这个函数时退出时或收到CTRL+C时做的扫尾工作.

我实在不能理解的是这段代码片断:

for(i=3; i<256; i++)
{
closesocket(i);
}


难倒创建的为端口转发而创建的SOCKET都在这个区域?
还是这个区域关闭的是一些特殊的SOCKET?

请高人指教下, 为何会有此代码片断.





...全文
123 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dibotiger 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 delphityro 的回复:]
3到256是有可能打开的其它描述符,在一个程序退出时,或是子进程继承父进程时,通常都有这么一个循环,以保证关闭所有有可能打开的描述符.这个代码写的不好,引起楼主的困惑,不应该使用256,而应该使用open_max或getrlimit,APUE第13章写守护进程的例子里,有同样的代码.
[/Quote]

呵呵,怎么感觉是LINUX下的描述?

这个代码是运行在Windows下的,难道Windows也有这样的事情?
或则,这个代码本来就是从LINUX下移植过来的?
周江涛 2010-11-24
  • 打赏
  • 举报
回复
3到256是有可能打开的其它描述符,在一个程序退出时,或是子进程继承父进程时,通常都有这么一个循环,以保证关闭所有有可能打开的描述符.这个代码写的不好,引起楼主的困惑,不应该使用256,而应该使用open_max或getrlimit,APUE第13章写守护进程的例子里,有同样的代码.

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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