Visual C++通信编程工程实例精解(附盘)
源代码在线查看: d075.bmp.txt
,/如果已经创建了套接字先关闭原来的
closesocket(m_hSocket);
m_hSocket= NULL;
)
if(m_hSocket==NULL)
{
//kii建新的套接字,这里是创建的流类型的套接字
m_hSocket= socket(AF_INET, SOCK_STREAM,O);
ASSERT(m. hSocket I-NULL);
//Serverlnit(),
if(WSAAsyncSelect(m_hSocket, m_hWnd, SER_MESSAGE, FD_ACCEPTIFD_READ
IFD_WRITEIFD_CLOSE》O)
AfxMessageBox("error select");
)
m_addr.sin_family= AF_INET;
m_addr.sin_addr.S_un.S_addr= INADDR_ANY;
m_addr.sin_port= htons(m_uPort);
int ret=0:
,,绑定一个套接字到本机的地址
ret= bind(m- hSocket, (LPSOCKADDR)&m_addr, sizeof(m_addr》;
if(ret—SOCKET_ERROR)
{ ,,绑定错误
AfxMessageBox(“绑定出错!”);
retum FALSE;
}
//开始一个侦听过程,等待客户的连接
ret= listen(m_hSocket,5);/,这里的第二个参数表示最多支持的客户连接数
if(ret==SOCKET ERROR)
{//listen失败
AfxMessageBox(”Listen Error”);
retum FALSE;
}
return TRUE;
)
(4)构造客户机类
为了便于代码重用,新建一个通用类CClient,封装了客户机的所有操作。声明代码如下:
class CClient
{
public:
CClient();
virtual ~CClient();
private:
void Clientlnit0;
75