黑马程序员_java 网络编程-1

来源:互联网 发布:忘尘娇喘 网络歌手 编辑:程序博客网 时间:2024/06/07 02:23

 ------- android培训、java培训、期待与您交流! ----------

网络编程其实是为了实现不同主机上的数据通信,而要实现通讯则需要首先知道对方的IP和端口号,同时明确双方使用的通信规则,或传输协议。
  Ip地址、端口号和传输协议,即是网络通讯的三要素。

       IP地址:主机在网络的地址,或者在网上的唯一标识。
  127.0.0.1,本地回环地址,用它可以测试网卡是否损坏;还有些IP地址保留了,不用于广域网,只用于局域网,
   例如:192.168.0.1~255,192.168.1.1~255等。

       端口号:数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识,为了方便称呼这个数字,就这个数组叫为“端口”,或“逻辑端口”,它并没有物理实体与之对应。有效端口好从0~65535,其中0~1024是系统保留的。一些常用程序的默认端口:浏览器80端口,TomCat服务器8080端口,MySQL的3306端口。
       通信规则:即传输协议,国际组织定义的通用协议是TCP/IP。TCP/IP既能用于局域网,也能用于广域网。除了TCP/IP,还有其他的协议,例如UDP、FTP、HTTP等。


网络模型

 主要由两个OSI和TCP/IP模型,其分层情况如下:
 TCP和UDP在传输层。IP协议在网络层。FTP协议、HTTP协议在应用层。
 数据封包:数据从应用层开始,每经过一层都加入该层的标识信息,直到物理层,这个过程就叫数据封包。之后变成二进制01数据从物理设备上传输。
 数据拆包:与封包过程正好相反,指去掉每层的标识信息,获取数据的过程。
 网络编程:现阶段主要是在网际层和传输层。而javaWeb开发主要是在应用层。
 Java中,对各个层都创建了有对象与之对应,以方便我们的开发使用。下边主要学习传输层的一些对象,比如InetAddress、Socket、DatagramSocket。


IP地址


 IP地址是数字,使用时不容易记忆,所以有与这个地址名想对应的主机名。主机名与IP地址相对应。
 体系结构:
  |----InetAddress
  |----Inet4Address,
          |----Inet6Address
 InetAddress中没有提供构造函数,但它提供了多种静态方法,以获取本类对象。


Socket地址


  封装的是带端口号的IP地址
  |——SocketAddress
               |——InetSocketAddress

解析新浪IP地址实例:

 

import java.net.*;class  IPDemo{public static void main(String[] args) throws Exception{//下边这句话会报未知主机异常/*
获取本地主机IP地址InetAddress i=Address.getLocalHost();System.out.println(i.toString());String adr = i.getHostAddress();String name = i.getHostName();sop("adr="+adr+" name="+name);*///获取其他主机IP地址//通过主机名获取IP地址,需要解析,所以较慢,而且对于百度、新浪这样的主机名,获得的IP地址可能不唯一。InetAddress i= InetAddress.getByName("www.sina.com");System.out.println(i.toString());String adr = i.getHostAddress();//获得IP地址的字符串表现形式String name = i.getHostName();//获取主机名sop("adr="+adr+" name="+name);}public static void sop(Object obj){System.out.println(obj);}}