今天在看TCP/IP 协议时看到一段代码,于是就拷贝下来自己编译运行一下,结果出现一个segmentation fault,这是一个奇怪的现象,奇怪在哪里呢?请往下看。
/* server.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MAXLINE 80
#define SERV_PORT 8000
int main(void)
{
struct sockaddr_in servaddr, cliaddr;
socklen_t cliaddr_len;
int listenfd, connfd;
char buf[MAXLINE];
char str[INET_ADDRSTRLEN];
int i, n;
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
listen(listenfd, 20);
printf("Accepting connections ...\n");
while (1) {
cliaddr_len = sizeof(cliaddr);
connfd = accept(listenfd,
(struct sockaddr *)&cliaddr, &c

文章描述了一位开发者在尝试运行一段TCP/IP服务器端代码时遇到的segmentationfault问题。问题出在函数inet_ntop的使用上,由于缺少头文件<arpa/inet.h>的包含,导致编译器对函数返回类型有误判。在修复头文件引用后,问题得到解决,程序能正常运行。
最低0.47元/天 解锁文章
848

被折叠的 条评论
为什么被折叠?



