欢迎来到天天文库
浏览记录
ID:29440794
大小:1.73 MB
页数:4页
时间:2018-12-19
《chapter15(my--java教案)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本章讨论JDK对socket和socket编程的支持。socket编程用来与在相同的网络上的另一台计算机上运行的程序进行通信。在完成本章学习之后,你应当能够:l开发代码来建立网络连接l理解TCP/IP和UDP协议l用ServerSocket和Socket类来实现TCP/IP客户和服务器l了解DatagramPacket和DatagramSocket来有效地进行基于UDP的网络通信1、socketsocket是指在一个特定编程模型下,进程间通信链路的端点。因为这个特定编程模型的流行,socket这个名字在其他领域得到了复用,包括Java技术
2、。当进程通过网络进行通信时,Java技术使用它的流模型。一个socket包括两个流:一个输入流和一个输出流。如果一个进程要通过网络向另一个进程发送数据,只需简单地写入与socket相关联的输出流。一个进程通过从与socket相关联的输入流读来读取另一个进程所写的数据。建立网络连接之后,使用与socket相关联的流和使用其他流是非常相似的。2、建立连接如果要建立连接,一台机器必须运行一个进程来等待连接,而另一台机器必须试图到达第一台机器。这和电话系统类似;一方必须发起呼叫,而另一方在此时必须等待电话呼叫。3、连接的地址你发起电话呼叫时,你必
3、须知道所拨的电话号码。如果要发起网络连接,你需要知道远程机器的地址或名字。此外,每个网络连接需要一个端口号,你可以把它想象成电话的分机号码。一旦你和一台计算机建立连接,你需要指明连接的目的。4、端口号TCP/IP系统中的端口号是一个16位的数字,它的范围是0~65535。实际上,小于1024的端口号保留给预定义的服务,而且除非要和那些服务之一进行通信(例如telnet,SMTP邮件和ftp等),否则你不应该使用它们。客户和服务器必须事先约定所使用的端口。如果系统两部分所使用的端口不一致,那就不能进行通信。5、Java网络模型在Java编程
4、语言中,TCP/IPsocket连接是用java.net包中的类实现的。下图说明了服务器和客户端所发生的动作。l服务器分配一个端口号。如果客户请求一个连接,服务器使用accept()方法打开socket连接。l客户在host的port端口建立连接。l服务器和客户使用InputStream和OutputStream进行通信。6、最小TCP/IP服务器TCP/IP服务器应用程序依靠Java技术语言提供的网络类:ServerSocket类完成了建立一个服务器所需的大部分工作。7、最小TCP/IP客户一个TCP/IP应用程序的客户方依靠Socke
5、t类。Socket类完成了建立一个连接所需的大部分工作。客户连接到上一页所示的服务器上,并将服务器发送的所有数据显示在控制台上。8、UDPsocketTCP/IP是面向连接的协议。而用户数据报协议(UDP)是一种无连接的协议。要区分这两种协议,一种很简单而又很贴切的方法是把它们比作电话呼叫和邮递信件。电话呼叫保证有一个同步通信;消息按给定次序发送和接收。而对于邮递信件,即使能收到所有的消息,它们的顺序也可能不同。用户数据报协议(UDP)由Java软件的DatagramSocket和DatagramPacket类支持。包是自包含的消息,它包
6、括有关发送方、消息长度和消息自身。1)DatagramPacketDatagramPacket有两个构造函数:一个用来接收数据,另一个用来发送数据:lDatagramPacket(byte[]recvBuf,intreadLength)用来建立一个字节数组以接收UDP包。byte数组在传递给构造函数时是空的,而int值用来设定要读取的字节数(不能比数组的大小还大)lDatagramPacket(byte[]sendBuf,intsendLength,InetAddressiaddr,intiport)用来建立将要传输的UDP包。sendL
7、ength不应该比sendBuf字节数组的大小要大2)DatagramSocketDatagramSocket用来读写UDP包。这个类有三个构造函数,允许你指定要绑定的端口号和internet地址:lDatagramSocket():绑定本地主机的所有可用端口lDatagramSocket(intport):绑定本地主机的指定端口lDatagramSocket(intport,InetAddressiaddr):绑定指定地址的指定端口
此文档下载收益归作者所有