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

来源:互联网 发布:matlab 数组排序 编辑:程序博客网 时间:2024/05/02 15:14
上问中有注解这里就不写了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();        }    }}
0 0
原创粉丝点击