因为最近刚好碰到这块,而且很不小心的在上面踩了个坑,所以把这个坑记录下来

首先,在我们都是在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编程获取客户端地址笔记的更多相关文章

  1. Linux下的C Socket编程 -- 获取对方IP地址

    Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...

  2. socket编程中客户端常用函数

    1 常用函数 1.1   connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...

  3. socket编程:客户端与服务器间的连接以及各函数的用法

    在认真的看UNP之前,一直被socket编程说的云里雾里,今天我要让大家从整天上认识socket编程,让我们知道socket编程的整个流程和各个函数的用法.这样:我们在写一些简单的socket编程时就 ...

  4. python--DenyHttp项目(1)--socket编程:客户端与服务器端

    查找了许多资料,实现了客户端与服务器端的连接,通过虚拟机进行测试 服务器端IP:192.168.37.129 端口1122 客户端IP: 192.168.37.1 端口1122 Server: #co ...

  5. 关于socket.io获取客户端真实IP地址

    1 前言 由于使用了CDN加速,导致了socket.handshake.address拿到值都是服务器的,而没有使用CDN加速时,可以拿到客户端真实IP. 2 代码 if(socket.handsha ...

  6. 在Linux上使用C语言编程获取IPv4地址及子网掩码

    在Linux上(如Ubuntu或CentOS), 获取某个Network Interface比如eth0的IP地址等信息,我们可以使用ifconfig或者ip addr show命令. $ ifcon ...

  7. C#版 Winform界面 Socket编程 Client客户端

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. socket编程中客户端常用函数 以及简单实现

    1 常用函数 1.1   connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...

  9. 026.1 网络编程 获取IP地址

    前面提及的:OSI,TCP-IP,IP地址,端口,协议概念我都清楚,所以我直接跳过前面,来到使用这里. //获取本机IP InetAddress ip = InetAddress.getLocalHo ...

随机推荐

  1. 2017-02-19C#基础 - 数据类型与类型转换

    数据类型 基本数据类型 1)整形:byte  short  int  long 整数类型 2)浮点型:fioat(.NET类型 Single 值后面要加f float = 10.5f;)  doubl ...

  2. .NET学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 你可以通过百度云盘下载.NET学习路线图相关视频资源 链接: http://pan.baidu.com/s/1pL2gCK7 密码: ...

  3. Ionic2开发笔记(2)创建子页面及其应用

    1. 当你第一次产生ionic2应用程序,这是生成的项目结构 ├── ├── config.xml      这包含配置应用程序的名称,和包名,将被用于我们的应用程序安装到一个实际的设备. ├── h ...

  4. MP3 信息读取

    MP3 信息读取 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0: 编者:乌龙哈里 2017-03-13 参考: MP3-wikipedia ID3v1 MPE ...

  5. 在node中使用 ES6

    ES6+ 太棒了,但是很多高级功能node是不支持的,就需要使用babel转换成ES5, 1.安装babel依赖 npm install babel-core --save-dev 2.安装babel ...

  6. 一个很逗的东西——Jd

    这个嘛是本人专门为了NOI上面对拍程序写的对拍程序,已经经历了NOI2015的考验:更重要的是——纯Pascal的哦(HansBug:其实是我不会写.sh脚本TT,谁叫用惯了windows的我只会写b ...

  7. ubuntu 切换java环境,配置单独的用户环境

    执行命令:sudo  update-alternatives --config javaThere are 2 choices for the alternative java (providing ...

  8. Android开发之旅:环境搭建

    1.JDK安装 2.Eclipse安装 3.Android SDK安装 4.ADT安装 5.创建AVD

  9. final 、finally 和 finalize()的区别

    1. final 是一个关键字.可以修饰数据.方法.类. 1)final 数据:final 用来修饰一个永不改变的编译时常量,或者运行时初始化但是不希望被改变的常量.一个既是 static又是 fin ...

  10. php错误的处理

    错误的分类 通常分3种: 语法错误: 程序运行之前,都要先检查语法.如果语法有错误,就会立即报错,并且不会去执行程序. 运行时错误: 就是在程序语法检查通过后,,开始运行程序并在此过程中遇到的错误.常 ...