网络编程 bind函数
bind的作用是确定端口号。
正常处理都是先bind,然后listen
如果不bind,直接listen,会是什么结果?
内核会自动随机分配一个端口号
例子:
#include <iostream>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
void print_ip_port(int sock){
char buf[48];
sockaddr_in s;
socklen_t sz;
sz = sizeof(s);
//取得socket里面的ip地址和端口号
if(getsockname(sock, (sockaddr*)&s, &sz) != 0){
perror("getsockname");
return;
}
//把bind的ip转化成字符串
inet_ntop(AF_INET, &s.sin_addr, buf, sizeof(buf));
std::cout << buf << ":" << ntohs(s.sin_port) << std::endl;
}
int main(){
int s0, sock;
sockaddr_in peer;
socklen_t peerlen;
int n;
char buf[1024];
//socket创建成功后,马上就调用监听listen
s0 = socket(AF_INET,SOCK_STREAM,0);
if(listen(s0, 5) != 0){
perror("listen");
return 1;
}
//打印出ip地址和端口号
print_ip_port(s0);
//等待客户端的连接
peerlen = sizeof(peer);
sock = accept(s0, (sockaddr*)&peer, &peerlen);
if(sock < 0){
perror("accept");
return 1;
}
write(sock, "hellon", 6);
close(s0);
close(sock);
}
c/c++ 学习互助QQ群:877684253
本人微信:xiaoshitou5854
原文链接: https://www.cnblogs.com/xiaoshiwang/p/9758308.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/282784
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!