Udp

news/2024/10/6 3:42:09/文章来源:https://www.cnblogs.com/JasHu/p/18287260

Udp协议

1.客户端(与服务器不需建立连接)

//1.建立socket
DatagramSocket datagramSocket = new DatagramSocket();
//2.建立一个包
String msg = "你好!";
InetAddress localhost = InetAddress.getByName("127.0.0.1");
int post = 9000;
//数据,数据起始,数据长度,数据发送地址
DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,post);
//3.发送包
datagramSocket.send(packet);
//4.关闭流
datagramSocket.close();

2.服务端(等待接受客户数据)

//1.创建一个端口
DatagramSocket datagramSocket = new DatagramSocket(9000);
//2.接受数据包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);datagramSocket.receive(packet);System.out.println(packet.getAddress().getHostAddress());
System.out.println(new String(packet.getData(),0,packet.getLength()));
//3.关闭资源
datagramSocket.close();

3.Udp聊天

//Sender
DatagramSocket socket = new DatagramSocket(9999);BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));while (true){String data = reader.readLine();byte[] bytes = data.getBytes();DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length,new InetSocketAddress("localhost",9000));socket.send(packet);if(data.equals("Bye")){break;}
}
socket.close();
//Receiver
DatagramSocket socket = new DatagramSocket(9000);while (true){byte[] container = new byte[1024];DatagramPacket packet = new DatagramPacket(container, 0,container.length);socket.receive(packet);String receiveData = new String(packet.getData(),0, packet.getLength());System.out.println(receiveData);if (receiveData.equals("Bye")){break;}
}

4.Udp多线程在线聊天

//发送
public class TalkSender implements Runnable{DatagramSocket socket;BufferedReader reader;private int fromPort;private int toPort;private String toIP;public TalkSender(int fromPort, int toPort, String toIP) throws SocketException {this.fromPort = fromPort;this.toPort = toPort;this.toIP = toIP;socket = new DatagramSocket(fromPort);reader = new BufferedReader(new InputStreamReader(System.in));}@Overridepublic void run() {try {while (true){String data = reader.readLine();byte[] bytes = data.getBytes();DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length,new InetSocketAddress(toIP,toPort));socket.send(packet);if(data.equals("Bye")){break;}}} catch (IOException e) {e.printStackTrace();} finally {socket.close();}}
}
//接收
public class TalkReceive implements Runnable{DatagramSocket socket;private int port;public TalkReceive(int port) throws SocketException {this.port = port;socket = new DatagramSocket(port);}@Overridepublic void run() {while (true){try {byte[] container = new byte[1024];DatagramPacket packet = new DatagramPacket(container, 0,container.length);socket.receive(packet);String receiveData = new String(packet.getData(),0, packet.getLength());System.out.println(receiveData);if (receiveData.equals("Bye")){break;}} catch (IOException e) {throw new RuntimeException(e);}}socket.close();}
}
//学生
public class Student {public static void main(String[] args) throws SocketException {new Thread(new TalkSender(9000,9999, "localhost")).start();new Thread(new TalkReceive(8000)).start();}
}
//老师
public class Teacher {public static void main(String[] args) throws SocketException {new Thread(new TalkSender(9900,8000,"localhost")).start();new Thread(new TalkReceive(9999)).start();}
}

URL(统一资源定位符:定位资源的)

DNS 域名解析 www.baidu.com ==>xxx.x.x.x
$$
协议://IP地址:端口号/项目名/资源
$$
下载网络资源

//下载网易云音乐
//1.下载地址对象
URL url = new URL("\n" +"https://m801.music.126.net/20240626104551/9e6149f5e794ca208ff3364e74f57c51/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/20289466004/7191/9c89/dca3/a0d98a2848ee5258b94cbc01a6f889c8.m4a");//2.连接资源的httpHttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();//3.copy资源
InputStream is = urlConnection.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream("music.m4a");byte[] buffer = new byte[1024];
int len;
while ((len=is.read(buffer)) != -1){fileOutputStream.write(buffer,0,len);
}
//4.关闭连接
is.close();
fileOutputStream.close();
urlConnection.disconnect();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/739691.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch中的多进程并行处理

PyTorch是一个流行的深度学习框架,一般情况下使用单个GPU进行计算时是十分方便的。但是当涉及到处理大规模数据和并行处理时,需要利用多个GPU。这时PyTorch就显得不那么方便,所以这篇文章我们将介绍如何利用torch.multiprocessing模块,在PyTorch中实现高效的多进程处理。多…

最新扣子(Coze)实战案例:使用扩图功能,让你的图任意变换,完全免费教程

大家好,我是斜杠君。今天和大家分享一个扣子图像流中的「智能扩图」工具节点,这个节点的作用是:可以在扩大图片的同时,并自动生成图像缺失的部分。🧙‍♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用。 📜 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》,完…

Vscode连接虚拟机报错

Permission denied, please try again.Vscode 连接虚拟机报错问题解决 问题解释 Permission denied, please try again.出现这个问题通常表示身份验证失败。 可能的原因有SSH用户密码错误 SSH端口非默认 SSH配置文件问题 虚拟机SSH服务问题:可能SSH服务没有正常启动或防火墙阻…

最新扣子(Coze)实战案例:使用图像流做超分,模糊图片秒变清晰,完全免费教程

🧙‍♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用。 📜 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》,完全免费学习。 👀 免费扣子Coze教程地址:https://www.bzfree.com/温馨提示:本文内容很多,涉及贯穿了搭建扣子应用的很多知识。没看过教程的同学,…

WebRTC入门

效果展示基础概念WebRTC指的是基于web的实时视频通话,其实就相当于A->B发直播画面,同时B->A发送直播画面,这样就是视频聊天了 WebRTC的视频通话是A和B两两之间进行的 WebRTC通话双方通过一个公共的中心服务器找到对方,就像聊天室一样 WebRTC的连接过程一般是A通过web…

组装8 地图移动

8,地图移动, 建立一个SURFACE,大小是18* unitx 19* unity 地图坐标 X,Y 坐标在显示中间 读取这个坐标 18 * 19 范围的地图数据,贴图到SURFACE 上。 问题 1,OBJECT第三层的贴图是UNITX,HEIGHT的大小, 这个HEIGHT的高度需要读取超过19个UNITY 的OBJECT,应该+12就可…

KubeSphere 社区双周报|2024.06.21-07.04

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.06.21-07.04。 贡献者名单新晋 KubeSphere co…

HSQL 数据库介绍(1)--简介

HSQLDB(HyperSQL Database)是一款用 Java 编写的关系数据库管理系统;它提供了许多功能,并严格遵循最新的 SQL 和 JDBC 4.2 标准;本文主要介绍其基本概念及安装。 1、简介 HyperSQL Database(HSQLDB)是一款现代的关系数据库系统。HSQLDB 遵循国际 ISO SQL:2016 标准,支持…

lazarus 设置中文界面及开启代码提示

1.选择, Tools-Options-Environment-General-Language 选择Chinese[zh-CN],点击ok,重启即可 2.开启标识符补全,代码提示,如下图设置即可 本人小站:www.shibanyan.com

《Programming from the Ground Up》阅读笔记:p19-p48

《Programming from the Ground Up》学习第2天,p19-p48总结,总计30页。 一、技术总结 1.object file p20, An object file is code that is in the machines language, but has not been completely put together。 之前在很多地方都看到object file这个概念,但都没有看到起…

Qt/C++音视频开发78-获取本地摄像头支持的分辨率/帧率/格式等信息/mjpeg/yuyv/h264

一、前言 上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行 ffmpeg -f dshow -list_options true -i video="Webcam" 命令获取指定摄像头设备的分辨率帧率格式等信息,会有很多条。那为什么需要这个功能呢…