Java套接字编程(上)[Java编程]
本文“Java套接字编程(上)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
用Java开辟网络软件非常便利和强盛,Java的这种力气根源于他独有的一套强盛的用于网络的 API,这些API是一系列的类和接口,均位于包java.net和javax.net中.在这篇文章中我们将介绍套接字(Socket)慨念,同时以实例阐明若何利用Network API操作套接字,在完本钱文后,你便可以编写网络低端通讯软件.
什么是套接字(Socket)?
Network API是典型的用于基于TCP/IP网络Java程序与其他程序通讯,Network API依靠Socket举行通讯.Socket可以当作在两个程序举行通讯衔接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给别的一个Socket中,使这段信息能传送到其他程序中.如图1
我们来解析一下图1,Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件拜候,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接纳到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息.
假定在图1的网络中增添第三个主机Host C,那么Host A怎么知道信息被精确传送到Host B而不是被传送到Host C中了呢?基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的无标记整数,由于没有改变成二进制,因此普通以小数点脱离,如:198.163.227.6,正如所见IP地址均由四个部份构成,每个部份的范围都是0-255,以表示8位地址.
值得注意的是IP地址都是32位地址,这是IP协议版本4(简称Ipv4)规定的,目前由于IPv4地址已近耗尽,所以IPv6地址正渐渐替换Ipv4地址,Ipv6地址则是128位无标记整数.
假定第二个程序被加入图1的网络的Host B中,那么由Host A传来的信息若何能被精确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保存Socket中的输入/输出信息,端口号是一个16位无标记整数,范围是0-65535,以辨别主机上的每一个程序(端口号就像房屋中的房间号),低于256的短口号保存给尺度利用程序,比方pop3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体便可以辨别每一个套接字t,下面我们就来谈谈两种套接字:流套接字和自寻址数据套接字.
流套接字(Stream Socket)
无论什么时刻,在两个网络利用程序之间发送和接纳信息时都需求成立一个坚固的衔接,流套接字依靠TCP协议来保证信息精确到达目的地,实际上,IP包有大概在网络中丧失大概在传送历程中发生错误,任何一种情形发生,作为承受方的 TCP将接洽发送方TCP重新发送这个IP包.这就是所谓的在两个流套接字之间成立坚固的衔接.
流套接字在C/S程序中扮演一个必须的角色,客户机程序(需求拜候某些服务的网络利用程序)成立一个扮演服务器程序的主机的IP地址和服务器程序(为客户端利用程序供应服务的网络利用程序)的端口号的流套接字对象.
客户端流套接字的初始化代码将IP地址和端口号传送给客户端主机的网络管理软件,管理软件将IP地址和端口号通过NIC传送给服务器端主机;服务器端主机读到经过NIC传送来的数据,然后查看服务器程序能否处于监听状况,这种监听仍然是通过套接字和端口来举行的;假如服务器程序处于监听状况,那么服务器端网络管理软件就向客户机网络管理软件发出一个主动的呼应信号,接纳到呼应信号后,客户端流套接字初始化代码就给客户程序成立一个端口号,并将这个端口号传送给服务器程序的套接字(服务器程序将利用这个端口号识外传来的信息能否是属于客户程序)同时完成流套接字的初始化.
假如服务器程序没有处于监听状况,那么服务器端网络管理软件将给客户端传送一个悲观信号,收到这个悲观信号后,客户程序的流套接字初始化代码将抛出一个非常对象并且不成立通讯衔接,也不成立流套接字对象.这种情形就像打电话一样,当有人的时刻通讯成立,不然电话将被挂起.
这部份的工作包含了相关联的三个类:InetAddress, Socket, 和 ServerSocket. InetAddress对象描绘了32位或128位IP地址,Socket对象代表了客户程序流套接字,ServerSocket代表了服务程序流套接字,全部这三个类均位于包java.net中.
以上是“Java套接字编程(上)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:Java套接字编程(下)
- ·下一篇文章:关于UDDI的实现
- ·中查找“Java套接字编程(上)”更多相关内容
- ·中查找“Java套接字编程(上)”更多相关内容