我正在用C学习一个简单的TCP服务器,并且存在以下问题。我的代码如下所示:
struct sockaddr_in servaddr;
socklen_t address_len;
int connfd, sockerr;
...
address_len = sizeof(servaddr);
if (sockerr = getpeername(connfd, (struct sockaddr *) &servaddr, &address_len) == -1) {
perror("peername error");
exit(1);
}
else {
printf("IP: %s\n", inet_ntoa(servaddr.sin_addr));
printf("Port: %d\n", (int) ntohs(servaddr.sin_port));
}
但是当我执行代码时,我遇到了分段错误。但是,如果我交换printf行,则正确显示端口,因此问题出在sin_addr字段。换句话说,问题出在:
printf("IP: %s\n", inet_ntoa(servaddr.sin_addr));
有关如何修复它的任何想法?
答案 0 :(得分:0)
好吧,我已经重写了我的代码以更好地适应这个网站中的示例:http://www.retran.com/beej/getpeernameman.html并且它已经成功了。
尽管如此,我仍然不知道以前出了什么问题。