创建sockaddr_in结构体变量,用于储存服务器地址信息。里面包括设置地址族、IP地址、端口号。 第四步 调用connect函数连接服务器。 通信 调send函数发送数据 调recv函数接收数据 实现代码 头文件部分 #include<iostream>#include<winsock2.h>#include<ws2tcpip.h>#pragmacomment(lib,"ws2_32.lib")//告诉编译器链接Win...
struct sockaddr { u_short sa_family; char sa_data[14]; }; 可知sockaddr有16个字节,而sockaddr_in也有16个字节,所以sockaddr_in是可以强制类型转换为sockaddr的。事实上也往往使用这种方法。 6.listen() 当服务器端的Socket对象绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。listen()...
其实, struct sockadd r和 struct sockaddr_in 这两个结构体都是用来处理网络通信的地址。sockaddr 常用于 bind、connect、recvfrom、sendto等 函数的参数,指明地址信息,是一种通用的套接字地址。sockaddr_in 是 internet 环境下套接字的地址形式。所以在网络编程中我们会对 sockaddr_in 结构体进行操作,使用 sockadd...
除此之外,“sys/socket.h” 中还定义了一些结构体如 sockaddr、sockaddr_in 等,这些结构体用于套接字地址的表示和传输。使用这些结构体可以更方便地操作套接字地址。 “sys/socket.h” 和“winsock2.h” 都是用于进行套接字编程的头文件,但它们之间有几个重要的差异。 1.操作系统平台不同 “sys/socket.h”...
printf("文件大小: %d 字节。", fileSize); WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET servSock = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); sockAddr.sin_family = PF_INET; ...
netinet/in.h 定义数据结构sockaddr_in arpa/inet.h 提供IP地址转换函数 sys/socket.h 提供socket函数及数据结构
网络中每台主机都有一个IP地址,用32位数字来表示。TCP和UDP必须指定端口号。在Windows SOCKET中sockaddr_in结构被用来指定IP和端口号。 [cpp]view plain copystructsockaddr_in{shortsin_family;u_short sin_port;structin_addrsin_addr;charsin_zero[8];}; ...
void main(){ WORD wV;WSADATA ws;int er;wV=MAKEWORD(1,1);er=WSAStartup(wV,&ws);if(er!=0){ return;} if(LOBYTE(ws.wVersion)!=1||HIBYTE(ws.wVersion)!=1){ WSACleanup();return;} SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_...
通过SOCKADDR_IN结构来指定IP地址和服务端口信息。 sin_family字段必须设置为AF_INET,已告知Winsock此时正在使用IP地址族。 sin_port定义端口。 sin_addr保存IP地址。 inet_addr函数:把点分IP地址转换成32位无符号长整数。 字节排序 big-endian:字节的排序从最无意义的字节到最有意义的字节; ...
【Windows: sockaddr_in结构】 addr_var.sin_addr.S_un.S_addr Winsock里最后那个32bit的S_addr也有几个以联合(Union)的形式与它共享内存空间的成员变量(便于以其他方式赋值). 遇到那种得到了是4个char的IP的形式(比如127一个,0一个,0一个和1一个共四个char),WinSock可以直接用4个S_b来赋值到S_addr里...