【发布时间】:2010-09-09 23:50:47
【问题描述】:
我正在 Linux 上编写我的第一个套接字程序,并试图打印我已连接到的对等方的 IP 地址和端口。我使用 getpeername() 以及 inet_ntop() 和 ntohs() 从 sockaddr_in 结构中获取数据。当我查看结果时,我得到了一个 IP 地址,它没有连接到我知道的任何服务器(ping 失败),并说我正在侦听 netstat 说没有被使用的端口。
我做错了什么?我应该得到 130.215.28.181:39000,但每次运行程序时我都会得到 209.94.72.137:18825。查看 netstat 表明我确实在监听 39000 端口。
这是我的客户端程序中的一个 sn-p:
connect(sockfd,&serv_addr,sizeof(serv_addr))
// print welcome message
char ipstr[INET6_ADDRSTRLEN];
bzero(ipstr, 50);
struct sockaddr_in *address;
socklen_t address_len = sizeof(*address);
getpeername(sockfd, (struct sockaddr *) address, &address_len);
inet_ntop(AF_INET, &address->sin_addr, ipstr, sizeof(ipstr));
printf("Connection established successfully with %s:%i!\n", ipstr, ntohs(address->sin_port));
【问题讨论】: