如果想要给它赋值一个地址,就必须调用bind()函数,否则就当调用connect()、listen()时系统会自动随机分配一个端口。 bind()函数 正如上面所说bind()函数把一个地址族中的特定地址赋给socket。例如对应AF_INET、AF_INET6就是把一个ipv4或ipv6地址和端口号组合赋给socket。 intbind(intsockfd,conststructsockaddr*ad...
(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(8000); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); // sendto()后面绑定端口,绑定失败 int err_log; err_log = bind(sockfd, (struct sockaddr*)&my_addr, sizeof(my_addr)); if(err_log != 0) { perror("...
intsockfd; sockfd=socket(AF_INET,SOCK_DGRAM,0);//创建UDP套接字 if(sockfd<0) { perror("socket"); exit(-1); } // 初始化本地网络信息 structsockaddr_inmy_addr; bzero(&my_addr,sizeof(my_addr)); my_addr.sin_family=AF_INET; my_addr.sin_port=htons(8000); my_addr.sin_addr.s_add...
相对于流套接字,数据报套接字的使用更为简单,它是由类型SOCK_DGRAM指定的,它不需要建立连接和维持一个连接,它们在AF_INET中通常是通过UDP/IP协议实现的。它对可以发送的数据的长度有限制,数据报作为一个单独的网络消息被传输,它可能会丢失、复制或错乱到达,UDP不是一个可靠的协议,但是它的速度比较高,因为它并...
sockfd_one = socket(AF_INET, SOCK_STREAM,0);//创建TCP套接字one if(sockfd_one <0) { perror("sockfd_one"); exit(-1); } // 设置本地网络信息 structsockaddr_inmy_addr; bzero(&my_addr,sizeof(my_addr)); my_addr.sin_family = AF_INET; ...
shortsin_family;//协议族,与前面Socket函数中提到的一样,我们这里使用AF_INET u_short sin_port;//端口号,需要 structin_addr sin_addr;//IP地址,需要使用网络序 charsin_zero[8];//没有实际意义,只是为了跟SOCKADDR结构在内存中对齐 }; 第三个参数addrlen为addr 变量的大小,可由 sizeof() 计算得出。
family:指定协议族,比如 AF_INET表示IPv4协议,AF_INET6表示IPv6协议 type:表明套接字类型,比如 SCOK_STREAM 表示字节流套接字,SCOK_DGRAM表示数据报套接字 protocol:表示某个协议类型的常量值,一般为0,表示对所有family和type的用系统默认值。IPROTO_TCP表示TCP协议,IPROTO_UDP表示UDP协议 ...
bind()函数把一个地址族中的特定地址赋给socket。例如对应AF_INET、AF_INET6就是把一个ipv4或ipv6地址和端口号组合赋给socket。 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 函数的三个参数分别为: sockfd:即socket描述字,它是通过socket()函数创建了,唯一标识一个socket。
bind()函数把一个地址族中的特定地址赋给socket。例如对应AF_INET、AF_INET6就是把一个ipv4或ipv6地址和端口号组合赋给socket。 intbind(intsockfd,conststructsockaddr*addr,socklen_t addrlen); 函数的三个参数分别为: sockfd:即socket描述字,它是通过socket()函数创建了,唯一标识一个socket。bind()函数就是将...
}/* create socket */intsock = socket(AF_INET, SOCK_STREAM,0);if(sock <0) { perror("socket error");return-1; }/* set sock option SO_REUSEADDR for re-bind when calling socket failed */intop =1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &op,sizeof(op));structsockaddr_inlocal...