网络编程之 UDP 实现聊天

 

 

循环发送

 

package chat;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * 发送方
 */
public class UdpSenderDemo1 {

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

        DatagramSocket socket = new DatagramSocket(8888);

        //准备数据:控制台读取:System.in
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        while (true){
            String data = reader.readLine();
            byte[] dataBytes = data.getBytes();
            DatagramPacket packet = new DatagramPacket(dataBytes, 0 , dataBytes.length, new InetSocketAddress("localhost", 6666));

            //发送数据包
            socket.send(packet);

            //当发送一句 bye 的时候表示结束发送
            if (data.equals("bye")){
                break;
            }

        }

        //关闭
        socket.close();
    }

}
 

接收消息

 

package chat;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 接收方
 */
public class UdpReceiveDemo1 {

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

        DatagramSocket socket = new DatagramSocket(6666);

        while (true){
            //准备接收数据包
            byte[] container = new byte[1024];
            DatagramPacket packet = new DatagramPacket(container, 0, container.length);

            //接收数据包
            socket.receive(packet); //阻塞式接收包裹

            //读取数据
            byte[] data = packet.getData();

            String receiveData = new String(data, 0, data.length);

            //接收到的数据
            System.out.println(receiveData);

            //当我们说一声 bye 的时候就表示断开连接
            if (receiveData.equals("bye")){
                break;
            }

        }

        //关闭
        socket.close();

    }

}
 
posted @ 2020-11-20 15:07  无明之辈  阅读(169)  评论(0编辑  收藏  举报