UDP实现多线程

来源:5-1 Socket 总结

小波66

2016-10-04 11:09

UDP实现多线程时,发生了错误(while怎么设置停止语句,要不然内存会一直飙升)。谁有编写好的UDP多线程程序?

写回答 关注

2回答

  • qq_森旅迷了鹿_0
    2016-11-21 17:56:12

    package UDPTest;


    import java.io.IOException;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;


    /**

     * 服务器端,实现基于UDP的用户登录

     * 

     * @author admin

     * 

     */

    public class UDPService {

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


    /*

    * 接受客户端发送的数据

    */

    // 创建服务器端DatagramSocket,并指定端口

    DatagramSocket socket = new DatagramSocket(8800);

    System.out.println("---服务器即将启动,等待客户端连接---");

    // 创建数据报,用于接受客户端发送的数据

    // 创建字节数组,用于指定接受的数据包的大小

    int count = 0;

    while (true) {

    byte[] data = new byte[1024];

    DatagramPacket packet = new DatagramPacket(data, data.length);

    // 接受客户端发送的数据,此方法在接受数据报之前会一直堵塞

    socket.receive(packet);

    // 创建一个多线程

    UDPThread thread = new UDPThread(packet, socket);

    // 线程开始

    thread.start();

    count++;

    System.out.println("当前客户端的数量为:" + count);

    // 查看连接的客户端的地址

    System.out.println("当前客户端的地址为:" + packet.getAddress());

    }

    }

    }


  • 慕粉15902996076
    2016-10-04 17:30:30

    package com.imooc;


    import java.io.IOException;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;


    public class UDPServerThread extends Thread{

    DatagramPacket packet;

    DatagramSocket socket;

    public UDPServerThread(DatagramPacket packet, DatagramSocket socket) {

    super();

    this.packet = packet;

    this.socket = socket;

    }

    public void run(){

    //读取数据

    byte[] data=packet.getData();

    String inf=new String(data,0,packet.getLength());

    System.out.println("我是服务器,客户端说:"+inf);

    /*

    * 与客户端响应

    */

    InetAddress address=packet.getAddress();

    int port =packet.getPort();

    byte[] data2="欢迎您".getBytes();

    //创建数据报

    DatagramPacket packet2=new DatagramPacket(data2, data2.length, address, port);

    try {

    socket.send(packet2);

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }


    小波66

    其他端的 代码有吗?

    2016-10-06 10:19:02

    共 1 条回复 >

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题