关于socket编程获取客户端地址笔记
Posted 你且浅笑相安
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于socket编程获取客户端地址笔记相关的知识,希望对你有一定的参考价值。
因为最近刚好碰到这块,而且很不小心的在上面踩了个坑,所以记录下来这个坑
首先,在我们都是在accept函数以后来获取客户端的地址:
client_sd = accept(watcher->fd, (struct sockaddr*) &client_addr, &client_len);
在服务端接收到accept以后,会使用结构体 struct sockaddr *来存储客户端的地址信息
我们可以通过inet_ntoa(client_addr.sin_addr)来获取到客户端ip(点分十进制字符串);
我在使用的时候,每次执行到inet_ntoa时候都会(Segmentation Fault)段错误,当时整个人都斯巴达了;
网上查了下资料发现,inet_ntoa就是这么用啊????? so???
sprintf(node->client_addr,"%s",inet_ntoa(client_addr.sin_addr));
最后在发现,坑在这里。。。
使用inet_ntoa必须添加头文件#include <arpa/inet.h>
在编译没有开警告的情况下 程序运行到这里就会Segmentation Fault
所有,在平时最好还是开启编译器警告比较好,不然这些问题真的很。。。。
以上是关于关于socket编程获取客户端地址笔记的主要内容,如果未能解决你的问题,请参考以下文章