获取本地端口

  9 static int16_t
 10 get_local_port()
 11 {
 12         int sock = socket(AF_INET, SOCK_STREAM, 0);
 13         if(sock < 0){
 14            return 0;
 15         }
 16
 17         struct sockaddr_in serv_addr;
 18         bzero((char *) &serv_addr, sizeof(serv_addr));
 19
 20         serv_addr.sin_family = AF_INET;
 21         serv_addr.sin_addr.s_addr = INADDR_ANY;
 22         std::cout<<INADDR_ANY<<std::endl;
 23         serv_addr.sin_port = 0;
 24         
 25         if(bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
 26           return 0;
 27         }
 28
 29         socklen_t len = sizeof(serv_addr);
 30         if(getsockname(sock, (struct sockaddr *)&serv_addr, &len) == -1){
 31           return 0;
 32         }
 33         if( close (sock) < 0)
 34         {
 35                 return 0;
 36         }
 37         return ntohs(serv_addr.sin_port);
 38 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值