一、在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面三个文件,否则会出现编译错误。
1.WINSOCK.H: 这是WINSOCK API的头文件,需要包含在项目中。
2.WSOCK32.LIB: WINSOCK API连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件中去。
3.WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。
二、服务器端操作 socket(套接字)
1)在初始化阶段调用WSAStartup()
2)建立Socket
SOCKETPASCALFARsocket( int af, int type, int protocol)
参数:af:目前只提供PF_INET(AF_INET);
type:Socket的类型(SOCK_STREAM、SOCK_DGRAM);
protocol:通讯协定(如果使用者不指定则设为0);
3)绑定端口
int PASCALFARbind(SOCKETs, const struct sockaddrFAR * name, int namelen);
参数:s:Socket对象名;
name:Socket的地址值,这个地址必须是执行这个程式所在机器的IP地址;
namelen:name的长度;
4)监听
int PASCALFARlisten(SOCKETs, int backlog);
参数:s:需要建立监听的Socket;
backlog:最大连接个数;
int PASCALFARWSAAsyncSelect(SOCKETs,HWNDhWnd,unsigned int wMsg, long lEvent);
参数:s:Socket对象;
hWnd:接收消息的窗口句柄;
wMsg:传给窗口的消息;
lEvent:被注册的网络事件,也即是应用程序向窗口发送消息的网路事件,该值为下列值FD_READ、FD_WRITE、FD_OOB、FD_ACCEPT、FD_CONNECT、FD_CLOSE的组合,各个值的具体含意为FD_READ:希望在套接字S收到数据时收到消息;FD_WRITE:希望在套接字S上可以发送数据时收到消息;FD_ACCEPT:希望在套接字S上收到连接请求时收到消息;FD_CONNECT:希望在套接字S上连接成功时收到消息;FD_CLOSE:希望在套接字S上连接关闭时收到消息;FD_OOB:希望在套接字S上收到带外数据时收到消息。
5)服务器端接受客户端的连接请求
SOCKETPASCALFARaccept(SCOKETs, struct sockaddrFAR * addr, int FAR * addrlen);
参数:s:Socket的识别码;
addr:存放来连接的客户端的地址;
addrlen:addr的长度
6)结束 socket 连接
int PASCALFARclosesocket(SOCKETs);
参数:s:Socket的识别码;
intPASCALFARWSACleanup(void );
参数:无
三、客户端Socket的操作
1)建立客户端的Socket
2)提出连接申请
int PASCALFARconnect(SOCKETs, const struct sockaddrFAR * name, int namelen);
参数:s:Socket的识别码;
name:Socket想要连接的对方地址;
namelen:name的长度
四、数据的传送
int PASCALFARsend(SOCKETs, const char FAR * buf, int len, int flags);
参数:s:Socket的识别码
buf:存放要传送的资料的暂存区
lenbuf:的长度
flags:此函数被调用的方式int PASCALFARrecv(SOCKETs, char FAR * buf, int len, int flags);
参数:s:Socket的识别码
buf:存放接收到的资料的暂存区
lenbuf:的长度
flags:此函数被调用的方式