对于任何基于Winsock的编程首先我们必须要初始化Winsock DLL库.
int WSAStarup( WORD wVersionRequested , LPWSADATA lpWsAData ).
wVersionRequested是我们要求使用的Winsock的版本.
调用这个接口函数可以帮我们初始化Winsock .然后我们必须创建一
个套接字(socket).
SOCKET socket( int af , int type , int protocol );
套接字可以说是Winsock通讯的核心.Winsock通讯的所有数据传输,
都是通过套接字来完成的,套接字包含了两个信息,一个是IP地址,一
个是Port端口号,使用这两个信息,我们就可以确定网络中的任何一
个通讯节点.
当我们调用了socket()接口函数创建了一个套接字后,我们必须把套
接字与你需要进行通讯的地址建立联系,我们可以通过绑定函数来实
现这种联系.
int bind(SOCKET s , const struct sockaddr FAR* name , int namelen ) ;
struct sockaddr_in
{
short sin_family ;
u_short sin_prot ;
struct in_addr sin_addr ;
char sin_sero[8] ;
}
就包含了我们需要建立连接的本地的地址,包括,地址族,ip和端口信
息.sin_family字段我们必须把他设为AF_INET,这是告诉Winsock使
用的是IP地址族.sin_prot 就是我们要用来通讯的端口号.sin_addr
就是我们要用来通讯的ip地址信息.
当服务器端和客户端建立连接以后,无论是客户端,还是服务器端都
可以使用
int send( SOCKET s , const char FAR* buf , int len , int flags );
int recv( SOCKET s , char FAR* buf , int len , int flags );
函数来接收和发送数据,因为,TCP连接是双向的.
当要关闭通讯连结的时候,任何一方都可以调用
int shutdown( SOCKET s , int how ) ;
来关闭套接字的指定功能。再调用
int closesocket( SOCKET s) ;
来关闭套接字句柄。这样一个通讯过程就算完成了。