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();
        }
    }
}
相关推荐
Pacify_The_North11 分钟前
【C++11(二)】可变参数模板和 lambda表达式
java·开发语言·c++
是梦终空17 分钟前
计算机毕业设计248—基于Java+Springboot+vue的博物馆预约系统(源代码+数据库+开发文档)
java·spring boot·vue·毕业设计·jwt·博物馆预约系统·博物馆网站
Tao____21 分钟前
支持mqtt、tcp、udp、websocket、http协议的物联网平台
java·物联网·mqtt·websocket·tcp/ip·udp
poggioxay29 分钟前
JAVA零基础入门知识3(持续更新中)
java·开发语言·python
雪影风痕38 分钟前
华为安全防火墙部署
服务器·网络协议·tcp/ip·网络安全
清晓粼溪41 分钟前
SpringMVC-01:基础知识
java·spring
互亿无线明明1 小时前
如何为全球业务构建可扩展的“群发国际短信接口”?
java·c++·python·golang·eclipse·php·erlang
写完代码就回家结婚1 小时前
Java函数式编程:用Stream API重构你的代码逻辑
java
琢瑜2 小时前
问题1:Oracle Java路径干扰。问题2:环境变量加载顺序问题
java·maven
Yang-Never2 小时前
Open GL ES->以指定点为中心缩放图片纹理的完整图解
android·java·开发语言·kotlin·android studio