网络编程,TCP,UDP

2019-02-18  本文已影响2人  黄同学2019

day26笔记【网络编程,TCP,UDP】

day26授课目录:

1_网络编程(网络编程概述)(了解)

2_网络编程(网络编程三要素之IP概述)(掌握)

3_网络编程(网络编程三要素之端口号概述)(掌握)

4_网络编程(网络编程三要素协议)(掌握)

5_网络编程(Socket通信原理图解)(了解)

6_网络编程(UDP传输)(了解)

7_网络编程(UDP传输优化)

        DatagramSocket socket = new DatagramSocket(6666);                       //创建socket相当于创建码头
    ​   DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);       //创建packet相当于创建集装箱
    ​   
        while(true) {
            socket.receive(packet);                                             //接收货物
            byte[] arr = packet.getData();
            int len = packet.getLength();
            String ip = packet.getAddress().getHostAddress();
            System.out.println(ip + ":" + new String(arr,0,len));
        }
* 发送端Send

        DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头
    ​   Scanner sc = new Scanner(System.in);
    ​   
        while(true) {
            String str = sc.nextLine();
            if("quit".equals(str))
                break;
            DatagramPacket packet =                             //创建packet相当于创建集装箱
                    new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
            socket.send(packet);            //发货
        }
        socket.close();

8_网络编程(UDP传输多线程)

        public class Demo3_MoreThread {

            /**
             * @param args
             */
            public static void main(String[] args) {
                new Receive().start();
                
                new Send().start();
            }
        
        }
    
        class Receive extends Thread {
            public void run() {
                try {
                    DatagramSocket socket = new DatagramSocket(6666);                   //创建socket相当于创建码头
                    DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);   //创建packet相当于创建集装箱
                    
                    while(true) {
                        socket.receive(packet);                                             //接收货物
                        byte[] arr = packet.getData();
                        int len = packet.getLength();
                        String ip = packet.getAddress().getHostAddress();
                        System.out.println(ip + ":" + new String(arr,0,len));
                    }
                } catch (IOException e) {
                    
                    e.printStackTrace();
                }
            }
        }
    
        class Send extends Thread {
            public void run() {
                try {
                    DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头
                    Scanner sc = new Scanner(System.in);
                    
                    while(true) {
                        String str = sc.nextLine();
                        if("quit".equals(str))
                            break;
                        DatagramPacket packet =                             //创建packet相当于创建集装箱
                                new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
                        socket.send(packet);            //发货
                    }
                    socket.close();
                }  catch (IOException e) {
                    
                    e.printStackTrace();
                }
            }
        }

9_网络编程(UDP聊天图形化界面)

10_网络编程(UDP聊天发送功能)

11_网络编程(UDP聊天记录功能)

12_网络编程(UDP聊天清屏功能)

13_网络编程(UDP聊天震动功能)

14_网络编程(UDP聊天快捷键和代码优化)

15_网络编程(UDP聊天生成jar文件)

16_网络编程(TCP协议)(掌握)

17_网络编程(TCP协议代码优化)

        Socket socket = new Socket("127.0.0.1", 9999);      //创建Socket指定ip地址和端口号
    ​   InputStream is = socket.getInputStream();           //获取输入流
    ​   OutputStream os = socket.getOutputStream();         //获取输出流
    ​   BufferedReader br = new BufferedReader(new InputStreamReader(is));
    ​   PrintStream ps = new PrintStream(os);
    ​   
        System.out.println(br.readLine());
        ps.println("我想报名就业班");
        System.out.println(br.readLine());
        ps.println("爷不学了");
        socket.close();
        ServerSocket server = new ServerSocket(9999);   //创建服务器
    ​   Socket socket = server.accept();                //接受客户端的请求
    ​   InputStream is = socket.getInputStream();       //获取输入流
    ​   OutputStream os = socket.getOutputStream();     //获取输出流
    ​   
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        PrintStream ps = new PrintStream(os);
        
        ps.println("欢迎咨询传智播客");
        System.out.println(br.readLine());
        ps.println("报满了,请报下一期吧");
        System.out.println(br.readLine());
        server.close();
        socket.close();

18_网络编程(服务端是多线程的)(掌握)

    ServerSocket server = new ServerSocket(9999);   //创建服务器
        while(true) {
            final Socket socket = server.accept();              //接受客户端的请求
            new Thread() {
                public void run() {
                    try {
                        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        PrintStream ps = new PrintStream(socket.getOutputStream());
                        ps.println("欢迎咨询传智播客");
                        System.out.println(br.readLine());
                        ps.println("报满了,请报下一期吧");
                        System.out.println(br.readLine());
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }

19_网络编程(练习)

20_网络编程(练习)

21_day26总结

上一篇 下一篇

猜你喜欢

热点阅读