socket中fd是什么意思以及如何通过socket获取对方地址

socket fd

socket中的fd:fild descriptor,就是一个套接字描述器。
在UNIX中的一切事物都是文件(everything in Unix is a file!)。我们用int在描述socket,实际上,所有的文件描述符都是int,没错,用的是一个整数类型。文件是应用程序与系统(包括特定硬件设备)之间的桥梁,而文件描述符就是应用程序使用这个“桥梁”的接口。在需要的时候,应用程序会向系统申请一个文件,然后将文件的描述符返回供程序使用。返回socket的文件通常被创建在/tmp或者/usr/tmp中。我们实际上不用关心这些文件,仅仅能够利用返回的socket描述符就可以了。


获取对方地址

getpeername:获取socket的对方地址。

    struct sockaddr_in sa;
    int len = sizeof(sa);
    getpeername(m_sockfd, (struct sockaddr *)&sa, &len);
    CCLog("[SEND]on sending data %d\n", ntohs(sa.sin_port));

记得要通过ntohs转换一下。

ntohs:作用是将一个16位数由网络字节顺序转换为主机字节顺序

更多关于网络字节顺序与本地字节顺序之间的转换函数请查看
ntohs, ntohl, htons,htonl的比较和详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大纲 一.Socket简介 二.BSD Socket编程准备 1.地址 2.端口 3.网络字节序 4.半相关与全相...
    VD2012阅读 2,453评论 0 5
  • 大纲 一.Socket简介 二.BSD Socket编程准备 1.地址 2.端口 3.网络字节序 4.半相关与全相...
    y角阅读 2,588评论 2 11
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • 什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Inter...
    liuboxx1阅读 993评论 0 1
  • 我把过去,都仔细回顾一边。抹去哀伤。除此之外,只留下美好的过往。无关爱情,因为那曾经,是我纯真的青春。 如今往事如...
    流离孤云阅读 381评论 0 1