返回顶端

Java UDP套接字编程(二)循环发送与接收

Java UDP套接字编程(二)循环发送与接收

通过UDP套接字实现循环发送与接收消息,直到发送或接收到"bye"为止。

发送消息:

package com.zzz.net;

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

public class UdpSenderDemo01 {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(6666);   //建立一个socket

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

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

            socket.send(packet);

            if(data.equals("bye")){
                break;
            }
        }

        socket.close();
    }
}

接收消息:

package com.zzz.net;

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

public class UdpReceiveDemo01 {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(7777);

        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);
            String receiveData = new String(data, 0, packet.getLength());
            System.out.println(receiveData);

//            if(receiveData.startsWith("bye")&&receiveData.charAt(3)=='\u0000'){ //断开连接
            if(receiveData.equals("bye")){
                break;
            }
        }
        socket.close();
    }
}

posted @ 2021-04-03 16:02  EEEEEEEric  阅读(394)  评论(0)    收藏  举报