sockaddr_in sin; memncpy(&sin,&clientAddr, sizoef(sin)); //取得ip和端口号 sprintf(info.ip, inet_ntoa(sin.sin_addr)); info.port=sin.sin_port; info.sock=new_fd; } 上面说的“转换”看起来是不是有些奇怪?实际上,你可以通过真正意义上的强制转来转换: sockaddr_in*pSin=(sockaddr_in*)&cli...
定义sockaddr_in结构体变量: struct sockaddr_in sa; 复制代码 设置地址族(AF_INET),端口号(port)和IP地址: sa.sin_family = AF_INET; sa.sin_port = htons(port); // 端口号需要使用htons函数转换为网络字节顺序 sa.sin_addr.s_addr = inet_addr(ip); // IP地址需要使用inet_addr函数转换为网络...
sockaddr_in sin; memncpy(&sin, &clientAddr, sizoef(sin)); // 取得ip和端口号 sprintf(info.ip, inet_ntoa(sin.sin_addr)); info.port = sin.sin_port; info.sock = new_fd; } 上面说的“转换”看起来是不是有些奇怪?实际上,你可以通过真正意义上的强制转来转换: sockaddr_in* pSin = (sock...
sin_port:存储端口号(使用网络字节顺序) sin_addr:存储IP地址,使用in_addr这个数据结构 sin_zero:是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。 而其中in_addr结构的定义如下: typedefstructin_addr { union{ struct{ unsignedchars_b1,s_b2, s_b3,s_b4;} S_un_b; ...
sockaddr_in 结构体里面包含结构体in_addr,这是他们的关系 inet_addr()是将一个点分制的IP地址(如192.168.0.1)转换为上述结构中需要的32位IP地址(0xC0A80001) 一般用法 struct sockaddr_in sockaddr; sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(MYPORT); ...
sockaddr_in是一个结构体,用于表示IPv4的套接字地址。它在网络编程中经常被使用,包含了IP地址和端口号等信息。 sockaddr_in结构体定义如下: 代码语言:c 复制 structsockaddr_in{shortintsin_family;// 地址族,一般为AF_INETunsignedshortintsin_port;// 端口号structin_addrsin_addr;// IP地址unsignedcharsin_ze...
struct sockaddr_in{ short sin_family; unsigned short sin_port; IN_ADDR sin_addr; char sin_zero[8]; }; Members sin_family Address family; must be AF_INET. sin_port Internet Protocol (IP) port. sin_addr IP address in network byte order. ...
sin_port IP 端口。 sin_addr IP 地址。 sin_zero 若要使框架相同大小的填充与SOCKADDR。 备注 这是SOCKADDR框架特定的窗体对 internet 地址族,并可转换为SOCKADDR。 此结构 IP 地址元素是类型IN_ADDR。IN_ADDR结构在 Windows 套接字头文件 WINSOCK.H 定义如下: ...
unsigned short int sin_port; /* Port number */ struct in_addr sin_addr; /* Internet address */ unsigned char sin_zero[8]; /* Same size as struct sockaddr */ };sin_family:指代协议族,在socket编程中只能是AF_INET sin_port:存储端口号(使用网络字节顺序)sin_addr:存储IP地址,使用in_...