为了账号安全,请及时绑定邮箱和手机立即绑定

UDP服务端多线程-----

标签:
Java

/
线程处理类
/
public class UDPServerThread extends Thread {

DatagramSocket socket = null;
DatagramPacket packet = null;

public UDPServerThread(DatagramSocket socket, DatagramPacket packet) {
    this.socket = socket;
    this.packet = packet;
}

public void run() {
    try {
        byte[] data = packet.getData();
        // 4、读取数据
        String info = new String(data, 0, packet.getLength());
        System.out.println("我是服务端,客户端说:" + info);
        /*
         * 向客户端响应数据
         */
        // 1、定义客户端的地址、端口号、数据
        InetAddress address = packet.getAddress();
        int port = packet.getPort();
        byte[] data2 = "欢迎您!".getBytes();
        // 2、创建数据报,包含响应的数据信息
        DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
        socket.send(packet2);

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

/
服务端主函数
/
public class UDPServer {

public static void main(String[] args) throws IOException {

    /*
     * 接收客户端信息
     */
    // 1、创建服务器端DatagramSocket,指定端口
    DatagramSocket socket = new DatagramSocket(8800);
    System.out.println("****服务器端已启动,等待客户端发送数据****");
    int count = 0;
    while (true) {
        // 2、创建数据报,用于接收客户端发送的数据报
        byte[] data = new byte[1024];
        DatagramPacket packet = new DatagramPacket(data, data.length);
        // 3、接收客户端发送的数据(此方法在接受到数据报之前会一直阻塞)
        socket.receive(packet);
        UDPServerThread serverThread = new UDPServerThread(socket, packet);
        serverThread.start();
        count++;
        System.out.println("目前客户端连接数:"+count);

    }

}

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 2
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消