sockaddr_in结构体详解

转载 2016年08月29日 11:52:42
sockaddr_in(在netinet/in.h中定义):
struct sockaddr_in {
short int sin_family;                      /* Address family */
unsigned short int sin_port;       /* Port number */
struct in_addr sin_addr;              /* Internet address */
unsigned char sin_zero[8];         /* Same size as struct sockaddr */
};
struct in_addr {
unsigned long s_addr;
};

typedef struct in_addr {
union {
            struct{
                        unsigned char s_b1,
                        s_b2,
                        s_b3,
                        s_b4;
                        } S_un_b;
           struct {
                        unsigned short s_w1,
                        s_w2;
                        } S_un_w;
            unsigned long S_addr;
          } S_un;
} IN_ADDR;

sin_family指代协议族,在socket编程中只能是AF_INET
sin_port存储端口号(使用网络字节顺序)
sin_addr存储IP地址,使用in_addr这个数据结构
sin_zero是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。
s_addr按照网络字节顺序存储IP地址

sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向
sockadd的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息,
在最后用进行类型转换就可以了bzero((char*)&mysock,sizeof(mysock));//初始化
mysock结构体名
mysock.sa_family=AF_INET;
mysock.sin_addr.s_addr=inet_addr("192.168.0.1");
……
等到要做转换的时候用:
(struct sockaddr*)mysock

socket编程——sockaddr_in结构体操作

http://blog.sina.com.cn/s/blog_6151984a0100etj1.html     sockaddr结构体 sockaddr的缺陷:sa_data把目标地址和端口信息...
  • chengfangang
  • chengfangang
  • 2013年02月25日 14:41
  • 3302

结构体struct sockaddr_in, struct sockaddr,struct in_addr

一、结构体 struct sockaddr_in,  struct sockaddr,  struct in_addr struct sockaddr_in,  struct sockaddr,st...
  • angle0615303
  • angle0615303
  • 2012年06月12日 20:03
  • 16040

socket编程总结(三) struct sockaddr_in /struct sockaddr_in6/struct addrinfo 结构体

ntohs, ntohl, htons,htonl 的比较和详解         在 C/C++ 写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。       这时就可能用到 htons(...
  • u011146511
  • u011146511
  • 2016年07月12日 10:48
  • 2067

【网络编程基础笔记】struct sockaddr和struct sockaddr_in的区别和用法

编写网络应用程序时,经常会用到sockaddr和sockaddr_in这两个结构体,对于新手来说,比较容易搞混它们的区别和使用方法。本文的笔记试图讲清楚它们之间的关系和正确的用法。 1. struc...
  • slvher
  • slvher
  • 2013年04月26日 19:36
  • 2348

sockaddr和sockaddr_in的区别

From: http://www.it165.net/pro/html/201211/4066.html 初学者很容易对二者有困惑的感觉,下面来讲一下二者的区别。 sockaddr是在头文件 ...
  • JoeBlackzqq
  • JoeBlackzqq
  • 2012年12月05日 10:01
  • 34981

sockaddr和sockaddr_in详解

struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。一、sockaddrsockaddr在头文件#include 中定义,sockaddr的缺陷是:...
  • will130
  • will130
  • 2016年11月24日 21:58
  • 4219

sockaddr_in , sockaddr , in_addr区别

sockaddr_in , sockaddr , in_addr区别struct   sockaddr   {                  unsigned   short   sa_famil...
  • jackychu
  • jackychu
  • 2009年08月19日 10:34
  • 24509

sockaddr_in , sockaddr , in_addr区别Socket编程函数集(非常有用)

一、sockaddr和sockaddr_in在字节长度上都为16个BYTE,可以进行转换 struct   sockaddr   {                   unsigned   sh...
  • maopig
  • maopig
  • 2013年12月07日 22:13
  • 25142

sockaddr和sockaddr_in的异同

sockaddr结构体 struct sockaddr { unsigned short sa_family; // 地址族, AF_xxx char sa_data[14]; //14字节...
  • sinat_26448309
  • sinat_26448309
  • 2017年07月26日 09:58
  • 83

sockaddr_in , sockaddr , in_addr区别Socket编程函数集(非常有用)

struct sockaddr 是一个通用地址结构,这是为了统一地址结构的表示方法,统一接口函数,使不同的地址结构可以被bind() , connect() 等函数调用;struct sockaddr...
  • jin13277480598
  • jin13277480598
  • 2016年12月23日 17:15
  • 456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sockaddr_in结构体详解
举报原因:
原因补充:

(最多只允许输入30个字)