Java IO UDP 协议网络传输

直接上代码
客户端代码

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

public class UDPClient {
    public static void main(String[] args) {
        try {
            DatagramSocket ds = new DatagramSocket();//创建socket
            String date = "洞幺,洞幺,我是洞拐";
            byte [] dates = date.getBytes();
            DatagramPacket dp = new DatagramPacket(dates ,dates.length);//传输数据的类
            dp.setSocketAddress(new InetSocketAddress("127.0.0.1",9999));//定义连接地址和端口
            ds.send(dp);//发送数据
            byte [] resp = new byte[1024];
            DatagramPacket respDp = new DatagramPacket(resp,0,resp.length);//接收响应数据的类
            ds.receive(respDp);//接收数据
            String respDate = new String(resp,0,resp.length);
            System.err.println(respDate);
            ds.close();//关闭连接
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务端

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

public class Main {

    public static void main(String[] args) {
        try {
            DatagramSocket ds = new DatagramSocket(9999);//设置服务端端口 如果不设置地址默认是本机

            byte[] dates = new byte[1024];

            DatagramPacket dp = new DatagramPacket(dates, dates.length);//传输数据的类 参数为缓冲池大小
            ds.receive(dp);//接收数据
            String string = new String(dates, 0, dates.length);
            System.err.println(string);
            String s = "洞拐,洞拐,洞幺已收到";
            byte[] resp = s.getBytes();

            DatagramPacket respDp = new DatagramPacket(resp, 0, resp.length, dp.getAddress(), dp.getPort());//响应给客户端的消息和客户端的请求一样的
            ds.send(respDp);//发送数据
            ds.close();//关闭
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这是一个简易的使用UDP协议进行网络传输的小dome,可以在这个基础上完善优化,这里不详细处理

你可能感兴趣的:(Java,IO,Java后台)