- 论坛徽章:
- 0
|
回复 20# Godbach
大神,我看了文档了,明白了,但是我这个初学者写的代码效率太底,你帮着写个例子好吗
这个是我cat /proc/2311/net/tcp的部分数据:
22: CA00A8C0:B39F 15C80E79:0050 08 00000000:00000001 00:00000000 00000000 0 0 171424 1 ffff880090bc1500 28 4 0 10 -1
23: CA00A8C0:C777 776425B9:0050 08 00000000:00000001 00:00000000 00000000 0 0 171422 1 ffff880130abb100 86 4 16 10 -1
24: CA00A8C0:9F81 05AA2305:0050 08 00000000:00000001 00:00000000 00000000 0 0 380784 1 ffff880130b6e900 113 4 0 10 -1
我把每一行都读到buf中,然后本地的端口号,如第一行的B39F都转成int型
这是我的部分代码:
int tcp_port;
char temp[4];
file=fopen("/proc/2344/net/tcp","r");
fgets(buf,1024,file);
//我是在下面的while中,将端口号转乘int
while(fgets(buf,1024,file)!=NULL)
{ printf("%s",buf);
printf(" ");
int i=15;
for(i;i<19;i++)
printf("%c",buf);
printf("\n");
temp[0]=buf[15];
temp[1]=buf[16];
temp[2]=buf[17];
temp[3]=buf[18];
printf(" %s \n",temp);
sscanf(temp,"%x",&tcp_port);
printf(" int:%x\n",tcp_port);
}
每个output包都要调用这个程序,我写的while中的语句占用资源太多cup,io都太高,我的机器有点负担不起这个防火墙,清大神给写个占用资源少的例子程序,谢谢
另外还一个问题,我是用fopen返回文件指针,或者open返回文件描述符,那种效率高?谢谢
|
|