UDP Socket聊天室(Java)

UDP聊天室:循环的发送字

通过while循环,文字一直可以发送

dp.getData()是获取 **DatagramPacket**中存储的数据的字节数组。

发送端:
java 复制代码
package TseUDP;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Scanner;

public class LoginCelint {
    //客户端
    public static void main(String[] args) {
        System.out.println("我是客户端---------------");
        //发送信息
        Scanner scanner = new Scanner(System.in);
        DatagramPacket dp = null;
        DatagramSocket ds = null;

        try {

            while (true){
                System.out.print("客户端请输入:");
                String msg = scanner.nextLine();
                dp = new DatagramPacket(msg.getBytes(),
                        msg.getBytes().length,
                        InetAddress.getByName("127.0.0.1"),
                        8888);

                ds = new DatagramSocket();
                ds.send(dp);

                //接收
                byte b[] = new byte[100];
                dp = new DatagramPacket(b,b.length);
                ds.receive(dp);
                String content = new String(dp.getData());
                System.out.println("服务器说"+content);


            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            ds.close();

        }
    }
}
接收端:
java 复制代码
package TseUDP;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
import java.util.Scanner;

public class LoginServer {
    //服务器
    public static void main(String[] args) {
        System.out.println("我是服务端------------------------------");
        Scanner scanner = new Scanner(System.in);
        DatagramPacket dp = null;
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(8888);

            while (true) {

                byte b[] = new byte[100];
                dp = new DatagramPacket(b, b.length);

                //等待接收
                ds.receive(dp);
                //拆包
                String msg = new String(dp.getData());
                System.out.println("客户端对我说:" + msg);

                //发送
                System.out.print("服务器请输入:");

                String content = scanner.next();
                //发送地址:获得上个数据包的发送地址
                SocketAddress sa = dp.getSocketAddress();
                dp = new DatagramPacket(content.getBytes(),
                        content.getBytes().length,
                        sa);
                ds.send(dp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            ds.close();
        }
    }
}
相关推荐
毕设源码-邱学长1 分钟前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
兑生2 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
daidaidaiyu2 小时前
一文学习 Spring 声明式事务源码全流程总结
java·spring
零雲3 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
平生幻3 小时前
TCP协议与UDP协议的区别
网络协议·tcp/ip·udp
虾..5 小时前
UDP协议
网络·网络协议·udp
左左右右左右摇晃6 小时前
Java并发——synchronized锁
java·开发语言
sxlishaobin7 小时前
Java I/O 模型详解:BIO、NIO、AIO
java·开发语言·nio
彭于晏Yan7 小时前
Spring AI(二):入门使用
java·spring boot·spring·ai
有一个好名字7 小时前
vibe codeing 开发流程
java