这里所讲的是基于Windows套接字编程的基本流程,Linux下的Socket编程也是大同小异,可以参考。
今天先大概讲一下基本流程:
1.创建套接字
使用CSocket类创建套接字对象时通过该类的构造函数创建的:
CSocket::CSocket();
例如:
CSocket sock;
2.绑定地址信息(服务端)
如果创建的服务器套接字,那么就要调用Bind()将套接字对对象与服务器地址信息绑定
BOOL Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen );
调用成功着返回true;否则,返回false。
lpSockAddr : 指定将要绑定的服务器地址结构,
nSockAddrLen : 表示地址结构的长度。
3.启动监听(服务端)
地址信息绑定套接字成功后,还需要调用函数Listen()在指定端口监听客户端的连接请求。
BOOL Listen( int nConnectionBacklog = 5);
nConnectionBacklog : 表示套接字监听客户端请求的最大数目1~5。默认为5.
4.连接服务器(客户端)
客户端创建套接字成功后,可以调用Connect()向服务器发送连接请求。
BOOL Connect( const SOCKADDR* lpSockADDR, int nSockAddrLen);
调用成功返回true,否则返回false。
lpSockADDR : 连接的服务器地址结构。
nSockAddrLen : 地址结构的长度。
5.数据交换
服务器和客户端都是调用Send()和Receive()进行数据通信。
virtual int Send( const void* lpBuff, int nBufLen, int nFlags = 0);
virtual int Receive( void* lpBuf, int nBufLen, int nFlages = 0);
6.关闭套接字对象
当服务器和客户端通信完成后,还需要调用Close()函数关闭套接字。
virtual void Close();
例如:
sock.Close();
好了今天就写到这下次再弄个实例看看。