<<黑马程序员>>java基础之网络编程

发布时间:2017-1-17 19:04:25 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"<<黑马程序员>>java基础之网络编程",主要涉及到<<黑马程序员>>java基础之网络编程方面的内容,对于<<黑马程序员>>java基础之网络编程感兴趣的同学可以参考一下。

网络通讯要素          IP地址:InetAddress 1. 网络中设备的标识 2. 不易记忆,可用主机名 3. 本地回环地址:127.0.0.1  主机名:localhost   端口号 1. 用于标识进程的逻辑地址,不同进程的标识 2. 有效端口:0~65535,其中0~1024系统使用或保留端口。   传输协议 1. 通讯的规则 2. 常见协议:TCP,UDP     TCP和UDP   UDP 1. 将数据及源和目的封装成数据包中,不需要建立连接 2. 每个数据报的大小在限制在64k内 3. 因无连接,是不可靠协议 4. 不需要建立连接,速度快   TCP 1. 建立连接,形成传输数据的通道。 2. 在连接中进行大数据量传输 3. 通过三次握手完成连接,是可靠协议 4. 必须建立连接,效率会稍低。   UDP传输   1. DatagramSocket与DatagramPacket 2. 建立发送端,接收端。 3. 建立数据包。 4. 调用Socket的发送接收方法。 5. 关闭Socket。   注意:发送端与接收端是两个独立的运行程序。   发送端:在发送端,要在数据包对象中明确目的地IP及端口。   接收端:在接收端,要指定监听的端口。 代码实现:          import java.io.*; import java.net.*;    //发送代码 public class DemoUDPSend{          public static void main(String[]args)throws Exception {               //建立一个发送的Socket DatagramSocket ds = new DatagramSocket();               //输入字符 BufferedReader br =                                    new BufferedReader(new InputStreamReader(System.in));               char[] array = new char[1024];               int a = 0;               while((a = br.read(array))!= -1){                      String s  = new String(array,0,a);                      byte by [] = s.getBytes();           //将发送的数据打包  DatagramPacket dp = new DatagramPacket(by,by.length,InetAddress.getByName("PC"),10000);                      //发送出去 ds.send(dp);                      ds.close();               }        }     }               //写一个接数据代码               public class DemoUpdReceive{                        public static void main(String[]args)throws Exception{                             //建立一个接受数据的Socket DatagramSocket ds = new DatagramSocket(10000);                             byte by[] = new byte[1024];                             //将接收到的数据装入数组中 DatagramPacket dp = new DatagramPacket(by,by.length);                             ds.receive(dp);                             String s = new String(by,0,dp.getLength());                             System.out.println(s);                                           } }   TCP传输   1. Socket和ServerSocket 2. 建立客户端和服务器端 3. 建立连接后,通过Socket中的IO流进行数据的传输 4. 关闭socket       基本思路(客户端)         1. 客户端需要明确服务器的ip地址以及端口,这样才可以去试着建立连接,如果连接失败,会出现异常。 2. 连接成功,说明客户端与服务端建立了通道,那么通过IO流就可以进行数据的传输,而Socket对象已经提供了输入流和输出流对象,通过 getInputStream(),getOutputStream()获取即可。 3. 与服务端通讯结束后,关闭Socket。   基本思路(服务端)                       1. 服务端需要明确它要处理的数据是从哪个端口进入的。 2. 当有客户端访问时,要明确是哪个客户端,可通过accept()获取已连接的客户端对象,并通过该对象与客户端通过IO流进行数据传输。 3. 当该客户端访问结束,关闭该客户端。     代码实现:        import java.net.*; import java.io.*;   //建立一个客户端 class kehuduan{                 public static void main(String[]args)throws IOException{                      //new 一个Socket出来 Socket kehu = new Socket(InetAddress.getByName("PC"),10000);                      //获取输入流 OutputStream os = kehu.getOutputStream();                            //写入数据 os.write("哥们你好 ".getBytes());                     InputStream s = kehu.getInputStream();                     byte [] by = new byte[1024];                     int len = s.read(by);                     System.out.println(new String(by,0,len));                     os.close();                     s.close();       } }   //建立一个服务端 class fuwuduan{                 public static void main(String[]args)throws IOException{                      //实例化一个服务端 ServerSocket fuwu = new ServerSocket(10000);                      Socket ss = fuwu.accept();                      //获取输入数据 InputStream is = ss.getInputStream();                      byte[] by = new byte[1024];                      int len = is.read(by);                      String s = new String(by,0,len);                      System.out.println(s);                      System.out.println(fuwu.getInetAddress());                      OutputStream os = ss.getOutputStream();                      os.write("哥们你也好".getBytes());                      is.close();                      os.close();               } }

上一篇:产品经理类产品的探索之路
下一篇:python之sqlite3使用详解

相关文章

相关评论