如何使用WinSocket进行通讯
// 从CAsyncSocket类派生出自己的类CMySocket;从CSocket类派生出CListenSocket类。
// 实际上进行通信的是两个CMySocket类的实例。而CListenSocket类只是用于服务端
// 进行监听用的。一旦它收到客户端的连接请求,它将使用一个CMySocket类实例来接受
// 连接请求。连接成功后,服务端的CMySocket类实例与客户端的CMySocket类实例就可以
// 进行通信了。注意,重载CListenSocket类中的OnAccept函数,代码如下:
CMySocket* pSocket = new CMySocket; // 要保证pSocket在函数返回后还存在。
if(!Accept(*pSocket)) return; // 关键是此句。
// 重载CMySocket类中的OnReceive函数,代码如下:
char ch;
int iErrorCode = Receive(&ch, 1); // 接收一个字符
if(iErrorCode == 0 || iErrorCode == SOCKET_ERROR){ // 接受出错
AfxMessageBox( "接收错误! "); // 显示出错信息
return; // 函数返回
}
if(ch == '\r '){ // 正常情况,判断接收到的字符是否等于 '\r '。
AfxMessageBox(m_strText); // 将接收到的信息显示出来。
m_strText = " "; // 将接收缓冲区清空。
}else{ // 字符不是 '\r '。
m_strText += ch; // 将字符添加到缓冲区后面。
}
最后还要创建关闭套接字的函数。
ShutDown(2);
Close();
// 从CAsyncSocket类派生出自己的类CMySocket;从CSocket类派生出CListenSocket类。
// 实际上进行通信的是两个CMySocket类的实例。而CListenSocket类只是用于服务端
// 进行监听用的。一旦它收到客户端的连接请求,它将使用一个CMySocket类实例来接受
// 连接请求。连接成功后,服务端的CMySocket类实例与客户端的CMySocket类实例就可以
// 进行通信了。注意,重载CListenSocket类中的OnAccept函数,代码如下:
CMySocket* pSocket = new CMySocket; // 要保证pSocket在函数返回后还存在。
if(!Accept(*pSocket)) return; // 关键是此句。
// 重载CMySocket类中的OnReceive函数,代码如下:
char ch;
int iErrorCode = Receive(&ch, 1); // 接收一个字符
if(iErrorCode == 0 || iErrorCode == SOCKET_ERROR){ // 接受出错
AfxMessageBox( "接收错误! "); // 显示出错信息
return; // 函数返回
}
if(ch == '\r '){ // 正常情况,判断接收到的字符是否等于 '\r '。
AfxMessageBox(m_strText); // 将接收到的信息显示出来。
m_strText = " "; // 将接收缓冲区清空。
}else{ // 字符不是 '\r '。
m_strText += ch; // 将字符添加到缓冲区后面。
}
最后还要创建关闭套接字的函数。
ShutDown(2);
Close();