[javaSE] 网络编程(UDP通信)
2024-10-15 10:09:18
UDP发送端
获取DatagramSocket对象,new出来
获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度,InetAddress对象,int端口
调用DatagramSocket对象的send()方法,发送出去,参数:DatagramPacket对象
调用DatagramSocket对象的close()方法,关闭资源
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 发送端
* @author taoshihan
*
*/
public class Sender {
public static void main(String[] args) throws Exception {
DatagramSocket ds=new DatagramSocket();
byte[] buf="Hello UDP".getBytes();
DatagramPacket p=new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(),10000);
ds.send(p);
ds.close();
}
}
UDP接收端
获取DatagramSocket对象,new出来,构造参数:int端口号
获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度
调用DatagramSocket对象的receive()方法,接收数据,参数:DatagramPacket对象
调用DatagramPacket对象的getAddress()方法,获取到InetAdress对象
调用DatagramPacket对象的getData()方法,获取到byte[]字节数组,接收的数据
调用DatagramPacket对象的getLength()方法,获取到数据长度
通过new String()包一下,获得String数据,参数:byte[]数组,0开始,length长度
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 接收端
* @author taoshihan
*
*/
public class Receiver {
public static void main(String[] args) throws Exception {
DatagramSocket ds=new DatagramSocket(10000);
byte[] buf=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(buf, buf.length);
ds.receive(datagramPacket); InetAddress ip= datagramPacket.getAddress();
int port=datagramPacket.getPort();
byte[] resByte=datagramPacket.getData();
int length=datagramPacket.getLength(); String info=new String(resByte,0,length);
System.out.println("来自:"+ip.getHostAddress()+":"+port+"说:"+info); }
}
结果:
来自:100.66.217.80:56356说:Hello UDP
先运行接收端,此时程序会阻塞住,等待接收。。。
再运行发送端
接收到一次以后就会断,用while(true) 包一下,死循环但是会阻塞住,注意不要把创建DatagramSocket包进去
最新文章
- Solr_全文检索引擎系统
- AppDelegate动态加载StoryBoard
- 慕课网__CSS__line height
- DB2导入导出数据库数据
- 创建QT CREATOR对话框报错 linux QT Creator :-1: error: cannot find -lGL
- UUID的具体用法
- C#函数运行超时则终止执行(任意参数类型及参数个数通用版)
- android 界面布局 很好的一篇总结[转]
- 用异提交时,后台通过校验规则文件,校验不通过时,跳转到INPUT视图时,前台显示错误信息的解决办法
- PHP数组与对象之间用递归转换
- 合约广告系统-Hadoop
- Less变量
- IDE中使用System.getProperty()获取一些属性
- C#中简单操作SQLserver数据库(ADO.NET的简单应用)
- 附005.Docker Compose文件详解
- 2018.11.03 NOIP模拟 图(bfs/最短路)
- 快速升级PHP5.4、MySql5.5版本WDCP面板一键包
- LAMP环境搭建实现网站动静分离[转]
- random内置模块
- python3.6编程第一课画个五角星
热门文章
- wpf ,只能窗口调整高度,并且设定最小值。
- ASP.NET中数据绑定表达式
- 通过IntelliJ IDEA创建maven+springmvc+mybatis项目
- 《Vue 编程房内考》
- nginx请求频率限制模块ngx_http_limit_req_module
- python学习笔记09-python编码与解码
- 【bzoj3224】【Tyvj 1728】 普通平衡树 树状数组
- 【GDKOI2016】 魔卡少女 线段树
- ContentProvider类的设计分析
- (转)权威支持: 选择正确的 WebSphere 诊断工具