在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下: typedef unsigned short sa_family_t; struct sockaddr { sa_family_t sa_family; /*...
sockaddr_in 结构体:struct sockaddr_in中的in 表示internet,就是网络地址,这只是我们比较常用的地址结构,属于AF_INET地址族,他非常的常用 sockaddr_in结构体解决了sockaddr的缺陷,把port和addr 分开储存在两个变量中 struct sockaddr_in { short int sin_family; unsigned short int sin_port; struct in_addr sin...
1. 数据结构 1.1 sockaddr是通用的socket地址,sockaddr_in也是经常使用的地址,两者可以进行类型转换 struct sockaddr{ unsigned short sa_family; //address family, AF_xxx char sa_data[14];
struct sockaddr_in servaddr,cliaddr; create_socket(char *server_addr_string,unsigned int server_port) { 源socket赋值 bzero(&cliaddr,sizeof(cliaddr)); cliaddr.sin_family = AF_INET; 通常TCP/UDP 协议源地址和端口都是随机的 cliaddr.sin_addr.s_addr = htons(INADDR_ANY); cliaddr.sin_port ...
sockaddr_un sockaddr_in6 小的总结 文件描述符 说明 概览 使用socket进行TCP的通信过程画个图表示一下: 笔者亲手绘制,引用请注明来源 这个过程是比较直观的,客户端和服务端要进行通信,我们简要分析一下: 客户端想要与服务端进行通信,则客户端自己要请求建立连接,只有建立了连接,双方才能收发数据,就好比打视频电话...
socket编程——sockaddr_in结构体操作 sockaddr结构体 sockaddr的缺陷: struct sockaddr 是⼀个通⽤地址结构,这是为了统⼀地址结构的表⽰⽅法,统⼀接⼝函数,使不同的地址结构可以被bind() , connect() 等函数调⽤;sa_data把⽬标地址和端⼝信息混在⼀起了 struct sockaddr { unsigned short...
in_addr为sockaddr_in成员,用于存储4个字节的IP地址。需要注意的是,此值填写时需要按照网络字节来填充,可以通过一些转换函数完成。 struct in_addr { unsigned long s_addr; }; structsockaddr_un sockaddr_un是用于存储AF_UNIX的套接字地址,推测un就代表UNIX(没有求证)。
sockaddr_in, sockaddr, in_addr区别 网络字节序和主机字节序 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
of the data types used for socket addresses, `struct sockaddr', `struct sockaddr_in', `struct sockaddr_un', etc.*/ #define__SOCKADDR_COMMON(sa_prefix) \ sa_family_t sa_prefix##family #define__SOCKADDR_COMMON_SIZE (sizeof (unsigned short int)) ...
sockaddr和sockaddr_in包含的数据都是一样的,但他们在使用上有区别: 程序员不应操作sockaddr,sockaddr是给操作系统用的 程序员应使用sockaddr_in来表示地址,sockaddr_in区分了地址和端口,使用更方便。 一般的用法为: 程序员把类型、ip地址、端口填充sockaddr_in结构体,然后强制转换成sockaddr,作为参数传递给系统调用函数...