windows messenger是不需要验证电子邮件地址的,只要是符合电子。
邮件格式的地址都可以注册,只不过如果使用msn或者hotmail的邮箱。
的话,可以和msn聊天系统进行在线绑定,所以,最好还是使用以上。
这两个邮箱。
对于验证电子邮件的地址,我知道最近流行两种:
一种是仅仅验证电子邮件的格式,通常是使用javascript中的正则表。
达式进行验证
如:"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"就可以验证email地。
址
另一种是验证电子邮件是否可用,一般使用相对方的邮箱发送一封不。
用存储的邮件信息并等待回复,如果回复成功则可用,如果不成功则。
不可用。
可以使用单机软件解决此问题,如:
NetScanTool Pro 10 中的Email Validate Tool。
也可以其它网站检验Email地址, 如:
http://coveryourasp.com/ValidateEmail.asp。
或者可以自己编写检测Email的程序,以下是网上的原文。
通过探测邮件服务器进行Email地址有效性检验 。
【摘 要】Email地址包括两个部分:用户名和邮件服务器。因此,检。
验邮件地址可以分为两步进行:首先检验邮件服务器,然后检验用户。
名。
Email地址有效性的检验是一个经常遇到的问题啦!一般的检验。
方法是对Email地址字符串进行简单的格式检验,如是否含有@ .等有。
效字符等。这种方法只能保证该地址从格式上看似有效,并不能保证。
地址可达。最近进行大量的地址校验,写了一个小程序,可以检测。
Email地址是否真正可达。
Email地址包括两个部分:用户名和邮件服务器。因此,检验邮。
件地址可以分为两步进行:首先检验邮件服务器,然后检验用户名。
如brookes_luan@yahoo.com.cn,首先检验yahoo.com.cn服务器是否。
是有效的邮件服务器,如果是再在该服务器上确认是否存在。
brookes_luan用户。
通过查询DNS服务器,获取域名的MX(Mail Exchanger)记录,
可以确定某一域名对应的邮件服务器是否有效。在Windows系统中,
可以使用nslookup程序来查看这一记录。
//通过nslookup程序查询MX记录,获取域名对应的mail服务器。
public string getMailServer(string strEmail)。
string strDomain=strEmail.Split('@')[1];。
ProcessStartInfo info=new ProcessStartInfo();。
info.UseShellExecute=false;。
info.RedirectStandardInput=true;。
info.RedirectStandardOutput=true;。
info.FileName="nslookup";。
info.CreateNoWindow=true;。
info.Arguments="-type=mx "+strDomain;。
Process ns=Process.Start(info);。
StreamReader sout=ns.StandardOutput;。
Regex reg=new Regex("mail exchanger = (?<mailServer>[^\\s]。
+)");
string strResponse="";。
while((strResponse=sout.ReadLine())!=null){。
Match amatch=reg.Match(strResponse);。
if(reg.Match(strResponse).Success) return amatch.Groups。
["mailServer"].Value;。
return null;
第二步,连接邮件服务器,确认服务器的可用性和用户是否存在。
public int checkEmail(string mailAddress)。
Regex reg=new Regex("^[a-zA-Z0-9_-]+@([a-zA-Z0-9-]+\\.){1,}。
(com|net|edu|miz|biz|cn|cc)$");。
if(!reg.IsMatch(mailAddress) return 405;//Email地址形式。
上就不对
string mailServer=getMailServer(mailAddress);。
if(mailServer==null)。
return 404; //邮件服务器探测错误。
TcpClient tcpc=new TcpClient();。
tcpc.NoDelay=true;。
tcpc.ReceiveTimeout=3000;。
tcpc.SendTimeout=3000;。
try{
tcpc.Connect(mailServer,25);。
NetworkStream s=tcpc.GetStream();。
StreamReader sr=new StreamReader(s,Encoding.Default);。
StreamWriter sw=new StreamWriter(s,Encoding.Default);。
string strResponse="";。
string strTestFrom="brookes_luan@yahoo.com.cn";。
sw.WriteLine("helo "+mailServer);。
sw.WriteLine("mail from:<"+mailAddress+">");。
sw.WriteLine("rcpt to:<"+strTestFrom+">");。
strResponse=sr.ReadLine();。
if(!strResponse.StartsWith("2")) return 403; //用户名有误。
sw.WriteLine("quit");。
return 200; //Email地址检查无误。
}catch(Exception ee)。
return 403;//发生错误或邮件服务器不可达。
这个程序是根据SMTP的基本过程实现的。与一个mail服务器连接。
发邮件的基本过程可能是这样的:
telnet mail.brookes.com 25。
>>220 brookes.com<IMail 8.02>。
HELO
>>250 mail.brookes.com。
MAIL FROM:brookes@tsinghua.org.cn。
>>250 Ok。
RCPT TO:me@brookes.com。
>>250 ok its for me@brookes.com。
DATA
>>ok.send it ;end with <CRLF>.<CRLF>。
soem data.
>>250 message queued。
QUIT
>>221 Goodbye.。
灰色部分代码是一个常规的Email地址检查方法,检查地址形式上的。
有效性。
程序用到了
System.IO,System.Net.Sockets,System.Diagnostics命名空间,通。
过checkMail(mailAddress)调用。
说明:
1.这种方法可以进一步检查Email地址的有效性,比只从形式上。
验证有了很大的进步。对于需要通过Email地址进行注册信息验证、
发送密码等应用,可以更进一步保证有效;
2.由于Email服务器的多样和可配置性,因此次程序并不能保证。
结果的普遍适用;
3.对于一些大的邮件服务器,通常具有较强的反垃圾邮件功能,
对于此类探测可能会作出反应,因此不适合于大量的地址探测。比如。
,我在探测过程中就发现了163.com服务器停止对次进行响应。
一、 填空题
___ IP地址____用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。
统一资源定位符URL是指向互联网“资源”的指针,由4部分组成:协议、存放资源的主机域名、__端口___和资源路径和文件名。
URL 是统一资源定位器的简称,它表示Internet上某一资源的地址。
在Socket编程中,IP地址用来标志一台计算机,但是一台计算机上可能提供多种应用程序,使用 端口 来区分这些应用程序。
在Java Socket网络编程中,开发基于TCP协议的服务器端程序使用的套接字是 ServerSocket 。
在Java Socket网络编程中,开发基于UDP协议的程序使用的套接字是 DatagramSocket 。
二、 选择题
1.以下协议都属于TCP/IP协议栈,其中位于传输层的协议是(AD)。(选择二项)
A TCP
B.HTTP
C.SMTP
D.UDP
2.以下协议中属于TCP/IP协议栈中应用层协议的是(A)。(选择一项)
A HTTP
B.TCP
C.UDP
D.IP
3.以下说法中关于UDP协议的说法正确的是(AD)。(选择二项)
A.发送不管对方是否准备好,接收方收到也不确认。
B.面向连接
C.占用系统资源多、效率低
D.非常简单的协议,可以广播发送。
4.在基于TCP网络通信模式中,客户与服务器程序的主要任务是(BC)。(选择二项)
A 客户程序在网络上找到一条到达服务器的路由。
B.客户程序发送请求,并接收服务器的响应。
C.服务器程序接收并处理客户请求,然后向客户发送响应结果。
D.如果客户程序和服务器都会保证发送的数据不会在传输途中丢失。
5.在Java网络编程中,使用客户端套接字Socket创建对象时,需要指定(A)。(选择一项)
A 服务器主机名称和端口
B.服务器端口和文件
C.服务器名称和文件
D.服务器地址和文件
6.ServerSocket的监听方法accept( )方法的返回值类型是(A )。(选择一项)
A.Socket
B.Void
C.Object
D.DatagramSocket。
7.Java UDP Socket编程主要用到的两个类是(BD)。(选择二项)
A UDPSocket
B.DatagramSocket。
C.UDPPacket
D.DatagramPacket。
8.在使用UDP套接字通信时,常用(D)类把要发送的信息打包。(选择一项)
A String
B.DatagramSocket。
C.MulticastSocket。
D.DatagramPacket。
三、 判断题
1. Socket是传输层供给应用层的编程接口,是应用层与传输层之间的桥梁 。( T )。
2. TCP/IP传输控制协议是Internet的主要协议,定义了计算机和外设进行通信的规则。TCP/IP网络参考模型包括七个层次:应用层、会话层、表示层、传输层、网络层、链路层和物理层。( F )
3. TCP协议一种面向连接的、可靠的、基于字节流的通信协议 。HTTP、FTP、TELNET、SMTP 都是基于TCP协议的应用层协议。( T )
4. UDP协议是一种面向无连接的、可靠的、基于字节流的传输层通信协议,该协议占用系统资源多、效率较低。( F )
四、 简答题
1.TCP/IP协议栈中,TCP协议和UDP协议的联系和区别?
2.简述基于TCP的Socket编程的主要步骤。提示:分别说明服务器端和客户端的编程步骤。
3.简述基于UDP的Socket编程的主要步骤。提示:分别说明服务器端和客户端的编程步骤。
五、 编码题
1.使用基于TCP的Java Socket编程,完成如下功能:
1) 要求从客户端录入几个字符,发送到服务器端。
2) 由服务器端将接收到的字符进行输出。
3) 服务器端向客户端发出“您的信息已收到”作为响应。
4) 客户端接收服务器端的响应信息。
提示:
服务器端:PrintWriter out =new PrintWriter(socket.getOutputStream(),true);。
客户端:BufferedReader line=new BufferedReader(new InputStreamReader(System.in));。
Socket 错误 = #10054通常原因为:远程主机上对等方应用程序突然停止运行,
或远程主机重新启动,或远程主机在远程方套接字上使用了“强制”关闭(参见setsockopt。
(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测。
到一个失败而中断,也可能导致此错误。此时,正在进行的操作以错误码WSAENETRESET。
失败返回,后续操作将失败返回错误码WSAECONNRESET. 解决办法:flashfxp菜单 : 选项->参数->代理->去掉“使用被动模式”
bool CRemoteLink::Connect()。
OnDisconnected(); // 如果已经连接,则断开。
if(!m_bUseProxy)。
m_iConnStatus = SS_CONNECTING; // 正在连接状态。
GNTRACE ("开始连接到远程服务器[%s][%ld]...\n", m_strip.c_str(), m_port);。
// 建立套接字, 准备连接到服务器。
m_socket = ::socket(AF_INET, SOCK_STREAM, 0);。
if (socket < 0) {。
if(m_pCallBack)。
m_pCallBack->OnSocketError(SE_CREATE, MSG_SE_CREATE);。
return false;
// 设为异步操作方式