网络常见服务功能

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
来自百度文库
18.4.1 以SOCKET方式发送邮件
以Socket方式发送邮件首先必须连接到一台提供SMPT服务 的邮件服务器,提供SMTP服务的服务器默认情况下开放 25端口供客户端连接。当客户端连接到该服务器后只要按 照SMTP协议的格式发送数据到服务器,服务器就会为客 户端发送邮件。
18.4.2 Java Mail介绍
8.3.2 监视客户端连接模块
然后还有一个类不断的监视是否有新的客户端连接到服务器 ,如果有就为该客户端单独启动一个新的RunnableServer 线程,该类的实现方式如下所示。
18.4 发送EMAIL
在介绍完如何实现服务器后,本节将介绍如何通过Java的网 络编程类库实现发送Email的功能。首先介绍以最原始的 方式通过SOCKET将数据按照SMTP协议的规定发送 Email,然后介绍通过利用Java Mail包发送邮件的方法。
18.5 建立URL连接
在万维网上,最吸引普通用户的功能一个是邮件发送功能( 当然,现在即时通讯功能要比邮件更令人着迷),另一个 就是访问丰富多彩的网页。网页通常是以URL的方式进 行访问。同Java Mail包一样,Java类库设计者也开发了 一套用于简化套接字编程的URL通信类库,本节将介绍 如何从URL获取信息和提交表单信息到服务器。
Java类库中提供了一个URL和URLConnection类用于实现 URL连接,这两个类隐藏了与服务器交互时复杂的连接 以及数据交互。欲实现与服务器的交互首先必须将URL 地址作为类URL构造方法的参数构建一个实例。
18.5.3 提交表单信息
在介绍完如何从服务器获取信息后本小节介绍如何向服务器 发送数据。提交表单有两种方法,一种称为GET方式, 另一种为POST方式。
在介绍Java的Socket编程之前首先介绍下telnet命令,在 Windows系统中已经带有telnet工具。telnet是一个用于同 远程计算机实现通讯的工具,只要远程计算机有开放指定 的端口并且能够提供服务,就可以使用telnet方式进行连 接。例如,FTP服务器默认开放23端口,就可以以telnet 的方式连接23端口,并利用ftp命令从ftp服务器下载数据 。HTTP服务器默认开放端口一般是80,也可以使用 telnet命令连接服务器的该端口号并获取html信息。
上一节中介绍的发送邮件的方法要求程序员熟悉SMTP协议 的细节。然而对于大部分程序员而言,了解这些底层的细 节并不是十分必要。因此Java的类库设计者专门为发送邮 件开发了一套完整的Java Mail包。这个类库并不包含在 Java的标准版中,需要到http://java.sun.com网站上去下 载,本节将详细的介绍这个类库的使用方法。 1.Java Mail类库介绍 2.Java Mail应用范例
18.5.1 URL与HTTP协议介绍
URL的全称为统一资源定位符(URL,英语Uniform Resource Locator的缩写),是因特网上标准的资源的地 址。最初由蒂姆· 伯纳斯-李发明用来作为万维网的地址 的。现在它已经被万维网联盟编制为因特网标准 RFC1738。
18.5.2 从URL获取信息
18.2 实现服务器
在介绍完如何去连接一个服务器后本节将介绍如何实现一个 服务器,一个服务器必须能够开放一个端口供客户端连接 并且能够向客户端发送数据。Java用于实现服务器的类是 ServerSocket,该类有一个接收端口号的构造方法,通过 该方法即可实现一个服务器。
18.3 实现多线程服务器
18.6.2 半关闭套接字
当客户端想服务器发送数据时,服务器必须能够获知客户端 的数据何时发送结束。因此,许多网络协议都是交互型的 ,一旦信息中包含有一个回车符就认为数据发送完毕(例 如SMTP协议)。另外一些协议则在消息头总包含有数据 长度信息。而在传送一个文件的时候,只需要关闭文件就 表示文件传送完毕。利用Socket与服务器进行连接时,如 果直接将Socket关闭就会立即与服务器断开连接,发送数 据和接收数据功能都会失效。
在上一节中笔者介绍了如何实现一个服务器,但是这个服务 器有一个问题――它只能同时响应一个客户端的连接。实 际应用中的服务器必须同时响应多个客户端,否则,这样 的服务器显然不能吸引用户去使用它。【示例18-5】本节 将介绍构建一个能够同时响应多个用户的服务器。
18.3.1 客户端交互模块
要实现并发响应,很自然的就会联想到利用多线程技术实现 。可以将接收而回馈用户的部分作为一个线程单独运行, 每次有一个新的用户连接到服务器就单独启动一个线程, 其代码如下所示。
18.6 高级套接字编程
本节笔者将针对套接字编程中经常遇到的一些问题提供解决 方案。第一节介绍当服务器没有响应而无法实现Socket连 接时如何设置超时时间,第二节介绍如何仅关闭输出流而 不关闭输入流以通知服务器请求已经结束。
18.6.1 套接字超时
如果没有为Socket连接设置超时时间,当服务器被关闭或因 为服务器超过最大等待线程数等原因无法响应新的客户端 请求的时候,通过Socket与服务器建立连接将使连接无限 期执行下去,直到服务器可以做出响应为止。如果客户端 使用的是单线程技术则客户端将进入一种“假死”的状态 ,这显然是不合理的。因此在决定与服务器建立连接之前 应该为其设置一个合理的超时时间,一旦连接时间超过该 时长程序就自动抛出异常并停止连接服务器。设置超时时 间方式如下所示。
18.1.2 Socket应用――网络设备状态监控器
由于利用Socket类的构造方法Socket(String host, int port)创 建Socket实例时就开始与某个网络设备建立连接,如果建 立失败就会抛出异常。因此完全可以利用Socket这个特性 实现网络设备监控的功能。【示例18-3】下面程序中监控 功能的思想是通过轮询的方式不断的与网络设备指定端口 连接,一旦连接失败并抛出异常就通知网络管理员。
18.1 Socket介绍
所谓socket通常也称作"套接字",用于描述IP地址和端口, 并通过这些信息实现与其他主机通信的工具。应用程序通 常通过"套接字"向网络发出请求或者应答网络请求。 Socket是Java网络编程的基础,大部分网络服务最终都是 通过Socket实现的。
18.1.1 Socket原理
相关文档
最新文档