代码改变世界

UDP server & client

2016-02-02 13:42  Loull  阅读(578)  评论(0编辑  收藏  举报

 

Server:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServerTest {

    public static void main(String[] args) throws IOException {
        DatagramSocket ds = new DatagramSocket(9954);

        byte[] data = new byte[512];
        DatagramPacket dp = new DatagramPacket(data, data.length);

        while (true) {
            ds.receive(dp);

            System.out.println("receive:");
            System.out.println(dp.getSocketAddress());
            System.out.println(new String(data, "UTF-8"));

            //response
            String st = "qnmlgb~hi!";
            byte[] bytes = st.getBytes();
            DatagramPacket response = new DatagramPacket(bytes, bytes.length,
                dp.getSocketAddress());
            ds.send(response);
        }
    }

}

 

Client:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

public class UDPClientTest {

    public static InetSocketAddress localServer = new InetSocketAddress("127.0.0.1", 9954);

    public static void main(String[] args) throws IOException {
        DatagramSocket ds = new DatagramSocket();
        String st = "loull~hi!";
        byte[] data = st.getBytes();
        DatagramPacket dp = new DatagramPacket(data, data.length, localServer);
        ds.send(dp);

        int localPort = ds.getLocalPort();
        System.out.println("localport:" + localPort);

        byte[] buf = new byte[512];
        DatagramPacket receive = new DatagramPacket(buf, buf.length);
        ds.receive(receive);
        String response = new String(receive.getData(), 0, receive.getLength());
        System.out.println("response:" + response);
    }

}