对DatagramSocket的使用实例(java使用UDP进行数据传输)
2024-08-31 17:10:43
今天刚看懂的一点点东西,记录一下,方便自己回顾
客户端:
Client.java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException; import org.json.JSONObject; public class Client { private static int port = 7799;//定义端口 数据报要用 private static String IP = "127.0.0.1";//定义IP地址 数据报要用 private static DatagramPacket packet = null;//定义要发送的数据报 public static void main(String[] args) throws IOException{
try(
DatagramSocket socket = new DatagramSocket();//创建UDP套接字 ) {
//将数据使用json编码发送
JSONObject jsonObject = new JSONObject();//创建json对象
jsonObject.put("test","hello");//给json对象插入数据 //初始化要发送的数据报参数为 {字节数组}{长度}{地址}{端口}
packet = new DatagramPacket(new byte[0], 0, InetAddress.getByName(IP), port);
//数据报应该包含发送的目的地址和端口号 byte[] test = jsonObject.toString().getBytes();//把json对象转换为字节码并存入字节数组中 packet.setData(test);//为要发送的数据包指定字节数组(要发送的数据) socket.send(packet);//发送数据包
}
catch (SocketException e) {
e.printStackTrace();
} }
}
服务端
server.java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; import org.json.JSONObject; public class server {
private static int port = 7799;
private String IP = "127.0.0.1";
//创建字节数组准备接收数据
private static byte[] test = new byte[1024];
private static DatagramPacket packet = new DatagramPacket(test,test.length); public static void main(String[] args) throws IOException { DatagramSocket socket = new DatagramSocket(port);//创建UDP套接字
socket.receive(packet);//接受数据报 String hell = new String(test, 0, test.length);//将收到的数据存在字符串中
JSONObject jsonObject = new JSONObject(hell);//获得存储数据的字符串的json编码
System.out.println(jsonObject);
String str = jsonObject.getString("test");//获取json编码中test对象的值
System.out.println(str);
} }
最新文章
- Mono产品生命周期
- Linux多线程编程
- gradle项目与maven项目相互转化
- SQL Server 2008 R2——T-SQL 存储过程 返回表
- brctl 的使用
- shell 入门教程
- spring+springmvc+mybatis+oracle+atomikos+jta实现多数据源事务管理
- jquery如此强大,为什么还要写原生呢?
- Centos MySQL数据库迁移详细步骤
- Centos7下安装PHP5.5,5.6,7.0----(转载记录一下)
- 安卓Listview和Adapter数据设计
- ZOJ_3950_How Many Nines 解题报告及如何对程序进行测试修改
- GOLANG错误处理最佳方案errors wrap, Defer, Panic, and Recover
- code4906 删数问题
- .NET 4中的多线程编程之一:使用Task(转载)
- 强制删除一个Windows服务
- CLS(公共语言规范)的CLSCompliant(跨语言调用)
- Linux命令(基础1)
- 笔记:Why don't you pull up a chair and give this lifestyle a try?
- C语言 scanf函数
热门文章
- Win10《芒果TV》跨年邀你嗨唱,同步直播《湖南卫视2017-2018跨年演唱会》
- C# SQL数据库的访问类
- Cannot read property 'apply' of undefined
- Android零基础入门第84节:引入Fragment原来是这么回事
- GzipStream的简单使用压缩和解压
- Screensiz.es站收集整理了移动端的相关尺寸。
- getch(),getche(),getchar()的区别
- ios开发系列之内存泄漏分析(上)
- vue项目实现表格导出excel表格
- web页面加载速度缓慢,如何优化?