面试题答案
一键面试- 创建Socket
- 流程:使用
socket
函数创建一个套接字。在C语言中,示例代码如下:
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
- 可能错误:
socket
函数可能返回-1,表示创建失败。错误原因可能是地址族不支持、协议不支持等。
- 处理方式:
- 使用
perror
函数打印错误信息,然后根据具体情况进行处理,比如退出程序或者尝试其他地址族或协议。示例:
if (sockfd == -1) { perror("socket creation failed"); exit(EXIT_FAILURE); }
- 使用
- 流程:使用
- 绑定地址和端口
- 流程:使用
bind
函数将创建的套接字绑定到指定的地址和端口。在C语言中,示例代码如下:
struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERVER_PORT); servaddr.sin_addr.s_addr = INADDR_ANY; if (bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) { // 错误处理 }
- 可能错误:
bind
函数返回-1,可能原因是地址已被占用、端口号非法、权限不足等。
- 处理方式:
- 同样使用
perror
打印错误信息。如果是地址被占用,可以尝试更换端口号;如果是权限问题,需要以管理员权限运行程序等。
- 同样使用
- 流程:使用
- 开始监听连接
- 流程:使用
listen
函数将套接字设置为监听状态,准备接受客户端连接。在C语言中,示例代码如下:
if (listen(sockfd, BACKLOG) == -1) { // 错误处理 }
- 可能错误:
listen
函数返回-1,可能原因是套接字未处于正确状态(如未绑定)等。
- 处理方式:
- 通过
perror
打印错误信息,检查之前步骤是否正确执行,如是否成功绑定地址和端口等,然后进行相应修正。
- 通过
- 流程:使用