网络编程

 

20110919

网络编程

所谓计算机网络就是把分布在不同地理区域的计算就与专门的外部设备用通信线路互连成一个规模大,弄能强的系统。从而是众多的计算机可以方便地相互传递信息,共享硬件、软件、数据信息等资源。

网络通信接口包括两部分:一是硬件装置,作用是实现节点之间的信息传送。二是软件装置,作用是规定双方之间进行通信的网络协议。

开放系统互连参考模型把计算机网络分成了物理层、数据链路层、网络、传输层、会话层、表示层、应用层七层。简单地说这些层的作用就是对数据进行了相应的封装和拆封。

TCP/IP协议

TCP是现在网络传输的基础协议,可以保证不同厂家生产的计算机能在共同的网络环境下运行。解决异构网络通信问题。TCP与低层的数据链路层和物理层无关,可广泛地支持由这两层协议构成的物理层结构。

IP协议规定了Internet数据传输的基本单元和格式。打个比方,在现实生活中,我们进行货物的运输时都是把货物包装成一个个纸箱或集装箱之后再进行运输,而IP协议就相当于规定了货物的集装箱尺寸,在网络世界中各种需要传输的信息都要遵守IP协议制定的信息传输的大小和格式,同时,IP协议还定了数据的路由选择,这就类似于我们进行货物运输时还规定了货物的运输方式和运输路线等条款。

TCP协议提供了可靠的数据传输服务规则。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给了目标计算机。而使用TCP协议,它将数据包成功发送给目标计算机后,会要求对方返回一个确认,如果在某段时间内没有收到确认,TCP将重新发送数据包。另外,在传输过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还负责将其恢复。

为实现网络中不同计算机之间的通信,网络中的每台机器都必需有一个与众不同的标识,这就是IP地址。TCP/IP使用IP地址来标识源地址和目的地址。IP地址的格式为:数字型、32位、由4段8位的二进制数组成。一般表示为十进制形式(4个0~255的十进制整数),中间用点隔开,如:266.177.88.99。

IP地址可以为唯一地确定网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务。此时还需要使用端口。

端口是一个16位的整数,用于表示数据交给哪个通信程序处理。因此,端口就是应用程序与外界交流的出入口,它是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。

不同的应用程序处理不同端口上的数据,同一台机器上不能有两个程序使用同一个端口。

InetAddress类的使用

Java.InetAddress类的主要作用是代表IP地址。InetAddress类还有两个子类,即Inet4Address和Iner6Address,它们分别代表了IP4地址和IP6地址。

InetAddress类没有提供构造方法,而是提供了两个静态方法来获取InetAddress实例。

gerByName(String host):根据主机获取对应的InerAddress对象

getAddress(byte[] addr):根据原始IP地址获取对应的InetAddress对象

InetAddress还提供了3个方法来获取InetAddress实例对应的IP地址和主机名。

String getCanonicalHostName():获取此IP地址的完全限定域名。

String getHostName():获取此IP地址的主机名。

除此之外,InetAddress类还提供了一个getLocalHost()方法来获取本机IP地址对应的InetAddress实例。

InetAddress类还提供了一个isReachable()方法,用于测试是否可以到达该地址,该方法的实现将尽最大努试图到达主机。但防火墙和服务器配置可能阻塞请求,使其在某些特定的端口可以访问时处于不可打的状态。

演示InetAddress的简单用法。

Import java.net*;

Public class TestNert1     {

      Public static void main(String[] args)throws Exception{

           //根据名来获取对应的InetAddress实例

           InetAddress ip=InetAddress.getByName(“www.oneedu.cn”);

           //判断是否可达

           System.out.println(“oneed是否可达:”+ip.isReachable(2000));

//获取该InetAddress实例的IP字符串

           System.out.println(ip.getHostAddress());

           //根据原始IP地址来获取对应的InetAddress实例

           InerAddress local=InetAddress.getByAddress(new byte[]{127,0,0,1});.

            System.out.println(“本机是否可达:”+local.isReachable(5000));

           //获取该InetAddress实例对应的完全限定域名

           System.out.println(local.getCanonicalHostName());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值