黑马程序员_网络编程

来源:互联网 发布:sqlserver怎么下载 编辑:程序博客网 时间:2024/06/05 18:08
------- android培训java培训、期待与您交流! ----------

 

 八  网络编程

   概述:

         网络编程从大的方面说就是对信息的发送到接收;网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!代码,开发工具,数据库,服务器架设和网页设计这5部分你都要接触。

    1.1网络通讯要素

           IP地址:网络中设备的标识;

           端口号:用于标识进程的逻辑地址;

           传输协议:通讯的规则,传输的协议。

     1.2网络模型

          OSI模型,TCP/IP模型

     1.3OSI模型

       应用层,表示层,回话层,传输层,网络层,数据链接层,物理层。

     1.4TCP/IP模型

         应用层,传输层,网际层,主机到网络层

      1.5网络编程是在网际层和传输层,Java web 是在应用层。

      1.6IP地址

           IP地址是网络中额表示,不易记忆,可用主机名,本地回环地址为:127.0.0.1;主机名为localhost

           端口号:用于标识进程的逻辑地址,不同进程的标识。

          传输协议:通讯的规则,常见的协议有:UDP,TCP

     1.7IP地址类

         IP地址类是InetAdress类,此类表示互联网协议的地址。

         实例化:由于InetAdress类中没有构造函数,其中有获取该类对象的方法。

                InetAdress ia=InetAdress.getLocalHost();

         其中的常见方法:getlocalhost();

                                      getHostAdress();获取IP地址字符串

                                      getHostName();获取IP地址的主机名

                                      Inetadress getByName();在给定主机名的情况下确定主机的IP地址。

      1.8TCP和UDP

          UDP:将数据及源和目的封装成数据包,不需要建立连接;

                     每个数据报的大小限制在64k内;

                     因无连接,是不可靠协议;

                    不需要建立连接,速度快。

         TCP:建立连接,形成传输数据的通道;

                    在连接中进行大数据量传输;

                   通过三次握手完全连接,是可靠协议;

                    必须建立连接,效率会稍低。

     1.9Socket

            Socket是为网络服务提供的一种机制;

            通信的两端都有Socket;

            网络通信其实就是Socket间的通信;

           数据在两个Socket间通过IO传输。

     1.10UDP传输

       发送端:

        DatagramSocket类和DatagramPacket类

        DatagramSocket    ds=new DatagramSocket(8888);创建数据报套接字并将其绑定到本地主机上的指定端口。

        byte【】 but=“sadfhwregfklfjkoqwe”.getbytes();

        DatagramPacket    dp=new DatagramPacket(but,but.length,"192.168.0.1",9999);构造数据报包,用来将长度为but。length的包发送到指定主机上的指定端口

        ds.send(dp);

        ds.close();

       接收端:

         DatagramSocket    ds=new DatagramSocket(10000);创建数据套接字并将其绑定到本地主机上的指定端口。

         byte[] buf=new byte[1024];

          DatagramPacket    dp=new DatagramPacket(buf,buf.length)构造数据报包,用来接收长度为buf.length的数据报。

         ds.receive(dp);

        ds.close();

       1.11键盘录入方式数据

          其实只是换一些数据或添加一些数据:

           发送端是读:

             BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

              String line=null; 

             while((line=bufr.readline())!=null)

             {

               if(886.equals(line))

                     break;

             }

              剩下的就一样了,就是改变了一些标识符。

         接收端:

             换成了IO流中的写部分。

        1.12聊天程序

           聊天程序既有接收数据部分,还有发送数据的部分。因此,需要同时执行,就需要用到多线程了。

           其实,聊天程序是两个线程同时进行,一个发送数据,一个接收数据。

        1.13TCP传输

            Socket类与ServerSocket类

            建立客户端和服务器端,建立连接后,通过Socket中的IO流进行数据的传输,然后关闭资源。

            Socket类:

                 此类实现了客户端套接字,是两台机器通信的端口。

           客户端:

               Socket s=new Socket(“”,10003);创建一个流套接字并将其连接到指定主机上的指定端口。

               OutputStream o=s.getOutputStream();返回此套接字的输出流。

               o.write(“”.getbytes());

               s.close();

            服务器端:

               ServerSocket ss=new ServerSocket(10003);

               Socket s=ss.accept();

               inputStream in=s.getInputStream();

               byte[] buf=new byte[1024];

               int len=in.read(but);

               s.close();

               ss.close();