当前位置:首页 > wininet
第九章 JAVA与网络编程
一、JAVA的应用范畴
1、两层的客户服务器体系结构 客户端:JAVA应用程序 服务器端:与数据源的沟端通过 Socket/RMI (Java远程方法调用) JDBC( Java数据库连接) EJB(Enterprise Jave Beans)/CORBA(公共对象请求代理(broker)体系结构)
2、基于HTML的两层体系结构 客户端:浏览器 HTML 服务器端:与数据源的沟端通过 JSP (Java Server Pages) Java servlet ASP, ASP.NET PHP, Perl等
3、基于HTML的三层体系结构 客户端:浏览器HTML WEB容器:JSP,Java Servlet (商业逻辑层) 后台服务器:Socket/RMI、JDBC、EJB/CORBA (数据源层) 负责数据库、ERP、邮件服务器等
4、基于Applet的三层体系结构 客户端:浏览器JavaApplet WEB容器:JSP,Java Servlet (商业逻辑层) 后台服务器:Socket/RMI、JDBC、EJB/CORBA (数据源层) 负责数据库、ERP、邮件服务器等 JavaApplet不好开发,此外浏览器不一定支持,所以SUN提供Java Plug-in,它可检查JVM版本并自动下载。而相应的HTML要做修改,要加上codebase以说明Java Plug-in的下载位置,type以说明此Java Applet的HTTP格式及版本,pluginspage以说明Java Plug-in的网页(如http://java.sun.com/products/plugin/1.3.plugin-install.html)等。
二、Java Socket
Java支持网络的API有: java.net (Networking)
javax.net.ssl (Networking with Secure Socket Layer) java.rmi (Remote Method Invocation)
javax.rmi (Remote Method Invocation for IIOP(互联网互操作ORB协议(IIOP))
URL处理:在java.net中,与URL有关的类别有: 接口: URLStreamHandleFactory
37
类: java.net.HttpURLConnection java.net.JarURLConnection java.net.URL java.net.URLClassLoader java.net.URLConnection java.net.URLDecoder java.net.URLEncoder java.net.URLStreamHandler
异常: java.net.MalformtedURLException java.net.UnkownServiceException
处理主机名称及IP地址: 类: java.net.InetAddress 方法: public byte[] getAddress() public static InetAddress[] getAllByName(String host) throws unkownHostException public static InetAddress getByName(String host) throws UnkownHostException public String getHostAddress() public String getHostName()
处理UDP通信协议 接口: DatagramSocketImplFactory 类: java.net.DatagramPacket java.net.DatagramSocket java.net.DatagramSocketImpl java.net.MulticastSocket 异常: java.net.SocketException
处理TCP通信协议
接口: SocketImplFactory SocketOptions 类: java.net.ServerSocket java.net.Socket java.net.SocketImpl 异常: java.net.BindException java.net.ConnectException java.net.NoRouteToHostException java.net.ProtocolException java.net.SocketException
处理网络及权限 类: java.net.Authenticator java.net.NETPermission java.net.PasswordAuthentication
38
java.net.SocketPermission java.net.SocketException
内容处理器
接口: ContentHandlerFactory 类: java.net.ContentHandler java.net.SocketException
java.net与TCP的相关API
服务器端:java.net.ServerSocket 建立服务器SOCKET及设置所使用的IP地址及端口 accept 侦听及接受来自客户端的连接请求,并且建立与客户端的连接 (java.io.DataInputStream)read 接收来自客户端的数据 (java.io.DataOutputStream)write 发送数据 Close 关闭Socket
客户端: java.net.Socket 建立客户端SOCKET并尝试与服务器端连接 (java.io.DataInputStream)read 接收数据 (java.io.DataOutputStream)write 发送数据 Close 关闭Socket
java.net与UDP的相关API java.net.DatagramSocket 建立Datagram SOCKET java.net.DatagramPacket 建立Datagram 数据包 (DatagramSocket)receive 接收数据 (DatagramSocket)send 发送数据 Close 关闭Datagram Socket
三、SMTP
1.SMTP工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器
39
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符(0D和0A)结束。响应包括一个表示返回状态的三位数字代码 3.SMTP在TCP协议25号端口监听连接请求
4.连接和发送过程: a.建立TCP连接
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令 服务器端希望以OK作为响应,表明准备接收
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行 服务器端则表示是否愿意为收件人接受邮件 d.协商结束,发送邮件,用命令DATA发送 e.以.表示结束输入内容一起发送出去 f.结束此次发送,用QUIT命令退出。
5.另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。 EXPN---用于扩充邮件列表。
6.邮件路由过程:
SMTP服务器基于?域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。
比如:SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com:
a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次请求shmail.abc.com的CNAME记录,直到没有为止 b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,
shmail MX 5 shmail.abc.com 10 shmail2.abc.com
c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4 d. Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序。 A记录(IP指向)、MX记录(邮件记录)、CNAME记录(别名指向)
7.SMTP基本命令集:
命令 描述 ------------------------------
HELO 向服务器标识用户身份
发送者能欺骗,说谎,但一般情况下服务器都能检测到。 MAIL 初始化邮件传输 mail from:
40
共分享92篇相关文档