• 网络编程


    UDP传输发送端

    package work.net;
    
    import java.io.IOException;
    import java.net.*;
    
    /**
     * Created by coolkid on 2014/12/17 0017.
     */
    public class UDPSendDemo {
        public static void main(String[] args) throws IOException {
            System.out.println("发送端启动...");
            /**
             * 创建UDP发送端
             * 1 - 建立UDP的socket服务
             * 2 - 将要发送的数据封装到数据包中
             * 3 - 通过UDP的socket服务发送数据包
             * 4 - 关闭socket服务
             *
             */
    
            //  1 - 建立UDP的socket服务
            DatagramSocket ds = new DatagramSocket();
            //  2 - 将要发送的数据封装到数据包中
            String str = "UDP传输演示:I'am Comming";
            byte[] buf = str.getBytes();
            //字节数组,长度,ip对象,端口
            DatagramPacket dp = new DatagramPacket(buf,buf.length, InetAddress.getByName("192.168.1.103"),10000);
    
            // 3
            ds.send(dp);
    
            // 4
            ds.close();
    
        }
    }

    UDP传输接收端

    package work.net;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    /**
     * Created by coolkid on 2014/12/17 0017.
     */
    public class UDPReceDemo {
        public static void main(String[] args) throws IOException {
            System.out.println("接收端启动...");
            /**
             * 建立UDP接收端
             * 1 - 建立udp socket服务
             * 2 - 创建数据包,用于存储接收到的数据,方便用数据包的方法解析这些数据
             * 3 - 用socket服务的receivce方法将接收到的数据存储到数据包中
             * 4 - 通过数据包的方法解析数据包中的内容
             * 5 - 关闭资源
             */
            // 1  注意指明端口
            DatagramSocket ds = new DatagramSocket(10000);
    
            // 2
            byte[] buf = new byte[1024];
            DatagramPacket dp = new DatagramPacket(buf,buf.length);
    
            // 3
            ds.receive(dp);
    
            // 4
            String ip = dp.getAddress().getHostAddress();
            int port = dp.getPort();
            String text = new String(dp.getData(),0,buf.length);
            System.out.println(ip+":"+port+":"+text);
        }
    }

    TCP传输客户端

    package work.net;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.Socket;
    
    /**
     * Created by coolkid on 2014/12/19 0019.
     */
    public class TCPClientDemo {
        public static void main(String[] args) throws IOException {
            /**
             * TCP传输 客户端建立过程
             * 1 - 创建TCP客户端Socket服务
             *      建议创建对象的时候就明确连接主机
             * 2 - 如果连接成功,说明数据传输通道已建立
             *      这个通道其实就是个流 - socket流,网络IO流,是底层建立好的,既有输入,也有输出
             *      想要输入或输出流对象,可以找Socket获取,getInputStream与getOutputStream
             * 3 - 使用输出流,将数据写出
             * 4 - 关闭资源
             */
            // 1
            Socket socket = new Socket("192.168.1.105",10002);
            // 2
            OutputStream outputStream = socket.getOutputStream();
            // 3
            outputStream.write("TCP演示:哥们又来了..".getBytes());
            // 4
            socket.close();
    
        }
    }

    TCP传输服务端

    package work.net;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Created by coolkid on 2014/12/19 0019.
     */
    public class TCPServerDemo {
        public static void main(String[] args) throws IOException {
            /**
             * 建立TCP服务端
             * 1 - 创建服务端Socket服务,用ServerSocket对象
             * 2 - 服务端必须对外提供端口,否则客户端无法连接
             * 3 - 获取连接过来的客户端对象
             * 4 - 通过客户端对象获取socket流,读取数据
             * 5 - 关闭资源
             *      关客户端、服务端
             */
            // 1
            ServerSocket serverSocket = new ServerSocket(10002);
            // 3 获取客户端对象
            Socket socket = serverSocket.accept();
            // 4
            InputStream inputStream = socket.getInputStream();
    
            byte[] bytes = new byte[1024];
            int len = inputStream.read(bytes);
            String text = new String(bytes,0,len);
            System.out.println(socket.getInetAddress().getHostAddress()+":"+text);
            socket.close();
            serverSocket.close();//一般服务端不关
        }
    }
  • 相关阅读:
    BZOJ.1034.[ZJOI2008]泡泡堂(贪心)
    BZOJ.4247.挂饰(背包DP)
    Codeforces.1040E.Network Safety(思路 并查集)
    LOJ.2863.[IOI2018]组合动作(交互)
    BZOJ.3624.[APIO2008]免费道路(Kruskal)
    BZOJ.4237.稻草人(CDQ分治 单调栈)
    BZOJ.3551.[ONTAK2010]Peaks加强版(Kruskal重构树 主席树)
    BZOJ.4946.[NOI2017]蔬菜(贪心 离线)
    BZOJ.2660.[BJOI2012]最多的方案(DP)
    BZOJ.3994.[SDOI2015]约数个数和(莫比乌斯反演)
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4604211.html
Copyright © 2020-2023  润新知