编写了个 socket程序,netstat检测不到绑定的端口

Wo_der 2017-09-26 03:10:40

#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<signal.h>
#include<unistd.h>
#include<stdlib.h>
#include<assert.h>
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
static bool stop=false;

static void handle_term(int sig){
stop=true;
}

int main(int argc, char *argv[]){
signal(SIGTERM,handle_term);//绑定事件处理函数

if(argc<3){
printf("uage %s ip_address port_number backlog\n ",
basename(argv[0]));
return 1;
}
//获取参数
const char *ip=argv[1];
int port=atoi(argv[2]);
int backlog=atoi(argv[3]);
printf("%s\n",ip);
printf("%d\n",port);

//
int sock=socket(PF_INET, SOCK_STREAM,0);
assert(sock>=0);

struct sockaddr_in address;
bzero( &address, sizeof(address) );
address.sin_family = AF_INET;
inet_pton(AF_INET,ip,&address.sin_addr);
address.sin_port=htons(port);

int ret=bind(sock, (struct sockaddr * )&address , sizeof(address));
assert(ret!=-1);

while(!stop){
sleep(1);
}

close(sock);
return 0;
}


运行

woder@ubuntu:~/project$ ./test 172.29.107.182 12345 5
172.29.107.182
12345



具体代码如上,该服务器参数接受三个参数:ip地址,端口号,backlog值,基本就是创建一个socket和创建一个ipv4的socket地址,然后绑定,最后listen
程序在ubuntu的虚拟机上编译运行没有错误,但在另一个终端上使用netstat -a | grep 12345 却什么都没有,是不是哪里做错了什么求解答
...全文
1688 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wo_der 2017-09-26
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
既没listen,又没connect,还想在netstat中看到对应信息?! 完全是空想社会主义。
超尴尬 代码抄错了,谢谢赵4老师
赵4老师 2017-09-26
  • 打赏
  • 举报
回复
既没listen,又没connect,还想在netstat中看到对应信息?! 完全是空想社会主义。
Wo_der 2017-09-26
  • 打赏
  • 举报
回复
拿请问网络编程不知道要发到哪里去啊,就只有两个奇怪的版面
舉杯邀明月 2017-09-26
  • 打赏
  • 举报
回复
C代码的问题,发到VB版来?
课程简介:Re:《 Linux 网络管理命令 》  ---------------------------------------内容提要: 01/22)命令 ifconfig:配置或显示网络接口信息02/22)命令 ifup:激活网络接口03/22)命令 ifdown:禁用网络接口04/22)命令 route:显示或管理路由表05/22)命令 arp:管理系统的arp缓存06/22)命令 ip:网络配置工具07/22)命令 netstat:查看网络状态08/22)命令 ss:查看网络状态09/22)命令 ping:测试主机之间网络的连通性10/22)命令 traceroute:追踪数据转发路由状况11/22)命令 arping:发送arp请求12/22)命令 telnet:远程登录主机13/22)命令 nc:多功能网络工具14/22)命令 ssh:协议详解15/22)命令 wget:命令行下载工具16/22)命令 mailq:显示邮件传输队列17/22)命令 mail:发送和接收邮件18/22)命令 nslookup:域名查询工具19/22)命令 dig:域名查询工具20/22)命令 host :域名查询工具21/22)命令 nmap:网络探测工具和安全/端口扫描器22/22)命令 tcpdump:监听网络流量            本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。       对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。       研磨每一个命令就是擦拭手中的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手中的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功!       本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。       本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述!     《参透 VMware 桌面级虚拟化》    《在虚拟机中安装模版机(包括应用软件等)》    《SecureCRT 连接 GNS3/Linux 的安全精密工具》  

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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