一、Winsock初始化
每个Winsock程序都必须加载合适的Winsock DLL版本,现有winsock1,winsock2。在调用Winsock之前首先的工作就是加载winsock相应的库。
加载所用的API是WSAStartup
当应用程序结束之后,关闭的API是WSACleanup
WSAStartup需要一个版本号信息及一个WSADATA的结构体作为函数的返回值。它的原型是这样的:


下面, 看一下WSAData结构体究竟描述了些什么信息:












具体的代码:



























二、IPv4结构体
当计算机通过TCP、UDP进行通迅时,用得最多的可能就是其主机的IP地址,应用程序的端口号。如何来表示这些信息呢?在Winsock中,可以通过一个结构体来指定其IP和服务端口的信息。结构体如下:










还有一些其它的函数,可以很方便的进行IP地址至字符串形式,32位整行形式 in_addr结构体形式的转换。还有的,可以把本地字节顺序与网络字节顺序进行转换
1.把一个点分IP转换成一个32位无符号长整型:
unsigned long inet_addr(const char FAR* cp);
2.将主机字节顺序转换为网络字节顺序
u_long htonl(u_long hostlong);
int WSAHtonl(SOCKET s, u_long hostlong, u_long FAR* lpnetlong);
u_short htons(u_short hostshort);
int WSAHtons(SOCKET s,u_short hostshort, u_short FAR* lpnetshort);
以上有不同的只是有些字节需要转换为long型,比如IP地址,有些只需要short型就可以了,比如PORT号.
而与上面逆向的函数则有:
u_long ntohl(u_long netlong);
int WSANtohl(SOCKET s, u_long netlong, u_long FAR* lphostlong);
//关于short型的,这里略