首页 新闻 搜索 专区 学院

服务器端调用getpeername,并把sockfd设置为监听sockfd时输出什么?

0
悬赏园豆:10 [已解决问题] 解决于 2012-08-12 22:37

我服务器端部分代码如下

connfd = accept(listenfd, (struct sockaddr_in *)&cliaddr, &len);

然后

getpeername(listenfd, (struct sockaddr_in *)&cliLog, &clilen);
printf("ip %s, port %d\n", inet_ntop(AF_INET, &cliLog.sin_addr, buff, sizeof(buff)), ntohs(cliLog.sin_port));

 

那么,应该输出什么呢?

我测试到结果是输出前一个连接到客户端的ip 和端口。

不理解这个函数在这里到用法,这里应该怎么理解,应该怎么用这个函数?

谢谢大家。

ziyoudefeng的主页 ziyoudefeng | 初学一级 | 园豆:122
提问于:2012-08-02 23:03
< >
分享
最佳答案
0

getpeername(connfd, (struct sockaddr_in *)&cliLog, &clilen);

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2012-08-03 09:36

我知道这样写是对的,想问下如果里面是listenfd会怎样?为什么会输出前一个连接到的客户端的ip 和端口

ziyoudefeng | 园豆:122 (初学一级) | 2012-08-03 10:26

@ziyoudefeng: 我想问下,只有一个客户端连接时,也就是 accept 第一次成功执行时,getpeername(listenfd, (struct sockaddr_in *)&cliLog, &clilen); 得到的ip和端口是什么?

Launcher | 园豆:45045 (高人七级) | 2012-08-03 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册