Visual C++网络编程经典案例详解 第7章 邮件收发器 发送邮件 设置并连接服务器

用户设置服务器信息完成后
应该立刻连接到服务器
需要在对话框中定义套接字变量

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地址输入服务器设置对话框中
便可以连接相应的服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值