在程序中 接受邮件功能是在接收邮件按钮的消息响应函数中实现的 该函数名为 OnRecv()
void CRecv::OnRecv() { addr.sin_family=AF_INET; //为地址结构中的成员赋值 addr.sin_port=htons(set.m_port); host=::gethostbyname(set.m_severadd.Getbuffer(1)); //获取主机地址 addr.sin_addr.S_un.S_addr=inet_addr(set.m_severadd.GetBuffer(1)); //转换IP地址 s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //创建套接字 if(connect(s,(sockaddr*) &addr,sizeof(addr))) //连接服务器 { ::SendMessage(statu,SB_SETTEXT,0,(long)"正在构造请求命令!"); CString str,str1; //定义字符串 GetDlgItem(IDC_ZHANGHU)->GetWindowText(name);//获取用户名 GetDlgItem(IDC_PASS)->GetWindowText(pass); //获取用户密码 str.Format("USER %s",name); //格式化用户名命令字符串 str+="\r\n"; //添加回车换行符 str1.Format("PASS %s",pass); //格式化密码命令字符串 str1+="\r\n"; //添加回车换行符 str+=str1; //连接两个字符串 ::SendMessage(statu,SB_SETTEXT,0,(long)"正在发送请求命令!"); //提示用户正在发送命令 send(s,str.GetBuffer(1),sizeof(str),0);//发送命令字符串 char recv[100]={0}; //定义字符串数组用于接收数据 if(recv(s,recv,100,0)) //接收数据 { if(recv[]=='O'&&recv[1]=='K') //服务器应答成功 { ::SendMessage(statu,SB_SETTEXT,0,(long)"服务器应答成功!"); SendCmdAndRecv(0) //调用自定义函数进行命令发送 } } else //接收失败 { ::SendMessage(statu,SB_SETTEXT,0,(long)"接收失败!"); } } else //连接失败 { ::SendMessage(statu,SB_SETTEXT,0,(long)"连接失败!"); } }在上面代码中 用户首先填充网络地址结构对象addr 然后创建套接字对象s 并且使用该套接字句柄进行连接服务器 如果服务器连接成功 则将构造成功的命令字符串发送到服务器执行 服务器执行成功则会返回字符串OK
接下来程序调用自定义函数SendCmdAndRecv()进行命令的发送
