简单实现基于UDP的Socket多线程通信

上问中有注解这里就不写了

public class Client {
    public static void main(String[] args) throws IOException {
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 8888;
        byte[] bytes= "我想说你们的服务器质量太差了".getBytes();
        DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length,address,port);
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.send(datagramPacket);

        byte[] bytes2 = new byte[1024];
        DatagramPacket datagramPacket2 = new DatagramPacket(bytes2, bytes2.length);
        datagramSocket.receive(datagramPacket2);

        String data = new String(bytes2,0,bytes.length);
        System.out.println(data);
    }

}
/*
 * 基于udp的服务端
 */
public class Server {
    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket(8888);
        System.out.println("服务器监听等待接收了");
        while (true) {
            byte[] bytes = new byte[1024];
            DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);

            datagramSocket.receive(datagramPacket);
            String a = new String(bytes,0,bytes.length);
            System.out.println(a);

            ServerThread serverThread = new ServerThread(datagramSocket,datagramPacket);
            //未设置线程优先级可能会导致运行时速度非常慢,可降低优先级
            serverThread.setPriority(4);//设置线程优先级,范围【1,10】默认为5
            serverThread.start();

        }

    }
}
public class ServerThread extends Thread {
    public DatagramSocket datagramSocket;
    public DatagramPacket datagramPacket;
    public ServerThread(DatagramSocket datagramSocket,DatagramPacket datagramPacket){
        this.datagramSocket = datagramSocket;   
        this.datagramPacket = datagramPacket;

    }
    @Override
    public void run() {
        try {                   
            byte[] bytes2 ="回复".getBytes();
            InetAddress address = datagramPacket.getAddress();
            int port = datagramPacket.getPort();
            DatagramPacket datagramPacket2 = new DatagramPacket(bytes2, bytes2.length,address,port);
            datagramSocket.send(datagramPacket2);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值