用户设置服务器信息完成后
应该立刻连接到服务器
需要在对话框中定义套接字变量
class CMyDlg:public CDialog
{
public:
SOCKET s; //定义套接字
sockaddr_in addr; //定义网络地址结构对象
hostent *host; //定义主机信息结构变量
}
用户在程序初始化函数中定义3个变量
功能实现在函数CMyDlg::OnPeizhi()中加代码
void CMyDlg::OnPeizhi()
{
set.DoModal(); //调用设置对话框
if(set.m_port>0 && set.m_port<100) //判断端口号范围
{
if(set.m_serveradd!="") //判断IP地址不为空
{
addr.sin_family=AF_INET; //为地址结构中的成员赋值
addr.sin_port=htons(set.m_port);
addr.sin_addr.S_un.S_addr=inet_addr(set.m_serveradd.GetBuffer(1));
//转换ip地址
s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(connect(s,(sockaddr*) &addr,sizeof(addr)))
{
::SendMessage(statu,SB_SETTEXT,0,(long)"smtp 服务器信息设置成功并已经连接服务器!");
GetDlgItem(IDC_SENDER)->EnableWindow(true); //设置各个控件状态
GetDlgItem(IDC_RECVER)->EnableWindow(true);
GetDlgItem(IDC_SUBJECT)->EnableWindow(true);
GetDlgItem(IDC_SENDMAIL)->EnableWindow(true);
GetDlgItem(IDC_RECVMAIL)->EnableWindow(true);
GetDlgItem(IDC_MAILTEXT)->EnableWindow(true);
GetDlgItem(IDC_SENDER)->SetWindowText("");
}
else
{
MessageBox("请检查网络连接或重新设置服务器信息!");
}
}
else
{
MessageBox("服务器地址不能为空");
}
}
else
{
MessageBox("端口范围(0~100)");
}
}
在程序中 函数inet_addr()将主机字节顺序的ip地址转换我网络字节顺序
用户通过命令行窗口输入命令即可从服务器域名地址得到服务器的ip地址
输入命令为 “ping mail.163.com”
用户将得到的转换ip地址输入服务器设置对话框中
便可以连接相应的服务器