Java网络编程之传输控制协议(三)

2016-02-19 14:31 7 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的Java网络编程之传输控制协议(三),手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 编程语言 】

五、建立TCP客户端
  
  讨论了套接字类的功能后,我们将分析一个完整的TCP客户端程序。此处我们将看到的客户端程序是一个daytime客户端,它连接到一个daytime服务器程序以读取当前的日期和时间。建立套接字连接并读取信息是一个相当简单的过程,只需要少量的代码。!-- frame contents -- !-- /frame contents --默认情况下daytime服务运行在13端口上。并非每台计算机都运行了daytime服务器程序,但是Unix服务器是客户端运行的很好的系统。假如你没有访问Unix服务器的权限,在第七部分我们给出了TCP daytime服务器程序代码--有了这段代码客户端就可以运行了。
  
  DaytimeClient的代码
  
  import Java.net.*
  import java.io.*;
  public class DaytimeClient
  {
  public static final int SERVICE_PORT = 13;
  
  public static void main(String args[])
  {
  // 检查主机名称参数
  if (args.length != 1)
  {
  System.out.println ("Syntax - DaytimeClient host");
  return;
  }
  
  // 获取服务器程序的主机名称
  String hostname = args[0];
  
  try
  {
  // 获取一个连接到daytime服务的套接字
  Socket daytime = new Socket (hostname,
  SERVICE_PORT);
  
  System.out.println ("Connection established");
  
  // 在服务器程序停止的情况下设置套接字选项
  daytime.setSoTimeout ( 2000 );
  
  // 从服务器程序读取信息
  BufferedReader reader = new BufferedReader (
  new InputStreamReader
  (daytime.getInputStream()
  ));
  
  System.out.println ("Results : " +
  reader.readLine());
  
  // 关闭连接
  daytime.close();
  }
  catch (IOException ioe)
  {
  System.err.println ("Error " + ioe);
  }
  }
  }
  
  
  DaytimeClient是如何工作的
  
  Daytime应用程序是很轻易理解的,它使用了文章前面谈到的概念。建立套接字、获取输入流,在很少的事件中(在连接时像daytime一样简单的服务器程序失败)激活超时设置。不是连接已筛选过的流,而是把有缓冲的读取程序连接到套接字输入流,并且把结果显示给用户。最后,在关闭套接字连接后客户端终止。这是你可能得到的最简单的套接字应用程序了--复杂性来自实现的网络协议,而不是来自具体网络的编程。
  
  运行DaytimeClient
  
  运行上面的应用程序很简单。简单地把运行daytime服务的计算机的主机名称作为命令行参数指定并运行它就可以了。假如daytime服务器程序使用了非标准的端口号(在后面会讨论),记得需要改变端口号并重新编译。
  
  例如,假如服务器程序在本机上,为了运行客户端将使用下面的命令:
  
  java DaytimeClient localhost
  
  注重
  
  Daytime服务器程序必须正在运行中,否则该客户端程序将不能建立连接。例如假如你正在使用Wintel系统而不是Unix,那么你需要运行DaytimeServer(后面会谈到
  
  
  六、ServerSocket类
  
  服务器套接字是一种特定类型的套接字,它用于提供TCP服务。客户端套接字绑定到本地计算机的任何空的端口,并且连接到特定服务器程序的端口和主机。服务器套接字与它的差别是它们绑定到本地计算机的某个特定的端口,这样远程客户端才能定位某种服务。客户端套接字连接只能连接到一台计算机,然而服务器套接字能够满足多个客户端的请求。
  
  它工作的方法很简单--客户端知道服务运行在某个特定的端口(通常端口号是知名的,并且特定的协议使用特定的端口号,但是服务器程序也可能运行在非标准的端口上)。它们建立连接,在服务器程序内部,连接会被接受。服务器程序可以同时接受多个连接,在某个给定的时刻也可以选择只接受一个连接。某个连接被接受后,它就表现为正常的套接字,形式为Socket对象--一旦你把握了Socket类,编写服务器程序就和编写客户端程序几乎一样简单了。服务器程序和客户端程序的唯一区别是服务器程序帮定到特定的端口,使用ServerSocket对象。ServerSocket对象就像创建客户端连接的工厂--你不必亲自建立Socket类的实例。这些连接都模拟正常的套接字,因此你能够把输入和输出过滤流关联到这些连接上。

来源:http://www.tulaoshi.com/n/20160219/1607112.html

延伸阅读
标签: Java JAVA基础
不提倡使用的方法是为支持向后兼容性而保留的那些方法,它们在以后的版本中可能出现,也可能不出现。Java 多线程支持在版本 1.1 和版本 1.2 中做了重大修订,stop()、suspend() 和 resume() 函数已不提倡使用。这些函数在 JVM 中可能引入微妙的错误。虽然函数名可能听起来很诱人,但请抵制诱惑不要使用它们。 调试线程化...
标签: 电脑入门
当我们使用浏览器在Internet这个高速公路纵横驰骋时,需要用到诸如http、FTP之类的传输控制协议来准确寻找资源,获取文件,这类传输控制协议就好象是公路上的交通标志一样,如果你不了解它,将无法到达你希望去的地方。 下面笔者就来说说这方面的问题,希望能给初次冲浪的朋友带来一些方便。 1、HTTP 英文名称:hyper text tran...
DOM初步  DOM是Document Object Model的缩写,即文档对象模型。前面说过,XML将数据组织为一颗树,所以DOM就是对这颗树的一个对象描叙。通俗的说,就是通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个对象。我们通过存取这些对象就能够存取XML文档的内容。  下面我们来看一个简单的例子,看看在DOM中,我们是...
5、GameScreen.java GameScreen使用了一个低级应用编程接口Canvas屏幕,和Image、Graphics类来绘制游戏面板、棋子,以及游戏的最终结果状态。要获取更详细的信息,请参阅各种绘画方法和drawCircle、drawCross、drawPiece、drawPlayerCursor、drawBoard等方法。这个屏幕使用MIDlet的quit回调方法来指示游戏结束。 此屏幕可适应各...
什么是UDP协议 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 为什么要使用UDP 在选择使用协议的时候,选择UDP必须要谨慎。在网络...

经验教程

386

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部