UDP Socket聊天室(Java)

embedded/2024/10/21 9:50:08/

 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();}}
}


http://www.ppmy.cn/embedded/118091.html

相关文章

气压高度加误差的两种方法(直接添加 vs 换算到气压误差),附MATLAB程序

在已知高度真实值时,如果需要计算此高度下的气压计误差,可考虑本文所述的两种方法 气压高度 气压与高度之间的关系可以用大气压的垂直变化来描述。随着高度的增加,气压通常会下降。这是因为空气的密度在高度增加时减少,导致上方空气柱对下方空气施加的压力减小。 主要关系…

速记篇 |TCP/IP五层模型怎么背,OSI七层模型怎么背?

背景 记忆TCP/IP五层模型和OSI七层模型可以通过理解每一层的功能、作用以及它们之间的逻辑关系来进行。下面分别给出这两个模型的记忆方法和要点: TCP/IP五层模型 TCP/IP五层模型是一个简化的模型,从下到上依次为: 1.物理层(Physi…

【IDEA】tomcat中war exploded加载慢

参考:Tomcat部署时war和war exploded区别以及平时踩得坑 参考:Tomcat启动war包卡死 启动慢 idea配置tomcat中war和war exploded的区别 虽然做了以下配置,但是感觉效果不太明显 [2024-09-25 11:47:59,212] 工件 ahb-service:war exploded: 正在部署工件,请稍候… [2024-09-…

【CSS】定位

static ( 默认 )relative ( 相对定位 )absolute ( 绝对定位 )fixed ( 固定定位 )sticky ( 粘性定位 ) 普通文档流?浮动也会让元素脱离文档流,如果不设置浮动所有元素都处于普通文档流中。普通文档流中元素框的位置由元素在HTML中的位置决定,块…

18.2 k8s-apiserver监控源码解读

本节重点介绍 : k8s代码库和模块地址 下载 apiserver源码 apiserver中监控源码阅读 k8s源码地址分布 k8s代码库 访问github上k8s仓库,readme中给出了k8s 模块的代码地址举例图片 组件仓库列表 地址 Repositories currently staged here: k8s.io/apik8s.io/a…

递归手撕,JSON 字符串化和解析,加权树结构的字符串解析对象,解析并返回DOM 树结构(DOMParser),解析带有层级的文本

目录 1 JSON 字符串化和解析 2 加权树结构的字符串解析对象 3. 解析并返回DOM 树结构 4. 解析带有层级的文本 1 JSON 字符串化和解析 // <!-- 实现一个函数&#xff0c;能够将自定义格式的字符串转换为 JSON 对象。 // 例如&#xff0c;给定字符串 name: "A…

Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(22) 互斥锁实现原理

文章目录 futex介绍互斥锁实现原理互斥锁使用了内核提供的futex机制来实现。futex机制不仅能用于实现线程级别的互斥锁,也能用于实现进程级别的信号量。 futex介绍 futex是fast userspace mutex的缩写,翻译过来就是快速用户空间互斥锁,是内核提供的同步机制,可以用于实现…

EfficientViT(2023CVPR):具有级联组注意力的内存高效视觉Transformer!

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention EfficientViT: 具有级联组注意力的内存高效视觉Transformer 万文长字&#xff0c;请耐心观看~ 论文地址&#xff1a; https://arxiv.org/abs/2305.07027 代码地址&#xff1a; Cream/Effici…