第1关:TCP套接字创建与端口绑定
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
/************************
* sockfd: 已经创建的套接字
* port: 需要绑定的端口号
* 返回值: 调用成功返回0,否则返回-1
*************************/
int bindSocket(int sockfd, unsigned short port)
{
int ret = -1;
/********** BEGIN **********/
struct sockaddr_in addr;
// 清空结构体
bzero(&addr, sizeof(addr));
// 设置地址族为IPv4
addr.sin_family = AF_INET;
// 将端口号从主机字节序转换为网络字节序并赋值
addr.sin_port = htons(port);
// 设置IP地址为INADDR_ANY,可绑定到任何网络接口
addr.sin_addr.s_addr = htonl(INADDR_ANY);
// 调用bind函数进行端口绑定
ret = bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));
if (ret == -1)
{
printf("绑定端口失败: %s\n", strerror(errno));
}
/********** END **********/
return ret;
}
<