这里介绍套接字创建过程中常见的网络地址信息初始化方法。
1 2 3 4 5 6 7
| struct sockaddr_in addr; char* serv_ip = "211.217.168.13"; char* serv_port = "9190"; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr(serv_ip); addr.sin_port = htons(atoi(serv_port));
|
1 2 3 4 5 6
| struct sockaddr_in addr; char* serv_port = "9190"; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr(INADDR_ANY); addr.sin_port = htons(atoi(serv_port));
|
向套接字分配网络地址
bind 函数负责把初始化的地址信息分配给套接字。
1 2 3 4
| #include <sys/socket.h>
int bind(int sockfd, struct sockaddr* myaddr, socklen_t addrlen);
|
- sockfd: 要分配地址信息(IP 地址和端口号)的套接字文件描述符
- myaddr: 存地址信息的结构体变量地址值。
- addrlen: 第二个结构体变量的长度。
如果此函数调用成功,则将第二个参数指定的地址信息分配给第一个参数中的相应个套接字。
下面给出服务器端常见套接字初始化过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int serv_sock; struct sockaddr_in serv_addr; char* serv_port = "9190";
serv_sock = socket(PF_INET, SOCK_STREAM, 0);
memset(&serv_addr, 0. sizeof(serv_addr); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(atoi(serv_port));
bind(serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr));
......
|
服务器端代码结构默认如上,当然还有未显示的异常处理代码。