社区
Java SE
帖子详情
用DatagramSocket发UDP的问题
player008
2005-03-23 08:09:19
用java写的DatagramSocket发UDP包,每秒发250个8K的包都已经发生了丢包的问题,在局域网上调.请问各位大虾有什么办法让可靠性高点?
...全文
239
8
打赏
收藏
用DatagramSocket发UDP的问题
用java写的DatagramSocket发UDP包,每秒发250个8K的包都已经发生了丢包的问题,在局域网上调.请问各位大虾有什么办法让可靠性高点?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
player008
2005-03-30
打赏
举报
回复
这个作用是什么?
虎叔
2005-03-29
打赏
举报
回复
看一下下面这里方法有没有帮助。
DatagramSocket.setTrafficClass()
player008
2005-03-25
打赏
举报
回复
这样测出来,java每秒只能发1000个4K的包左右,而且丢包也挺严重的,远不及c语言的,有那位高手来发表一下意见。
abcdhy
2005-03-24
打赏
举报
回复
在局域网上,其实如果网络比较好,丢包发生少, TCP 的速度也不会比 UDP 慢多少的.
而且局域网的带宽那么大, 对于 TCP 产生的附加字节,根本就可以忽略不计
虎叔
2005-03-23
打赏
举报
回复
UDP协议本身是不可靠传输,如果需要可靠传输,可以考虑自己作包检测重发。
player008
2005-03-23
打赏
举报
回复
本人写的测试程序,大家看看有没有可以优化的。
发送端:
String strServer = textServer.getText();
InetAddress target = InetAddress.getByName(strServer);
//得到目标机器的地址实例
int nPort = Integer.parseInt(textPort.getText());
long lInterval =Long.parseLong(textInterval.getText());
int nTimes = Integer.parseInt(textTimes.getText());
DatagramSocket ds = new DatagramSocket(nPort);
//从端口发送数据报
String strContent = textContent.getText();
//要发送的数据
//byte[] buf = strContent.getBytes();
byte[] buf = new byte[1024*8];//一个包8K
//将数据转换成Byte类型
DatagramPacket op = new DatagramPacket(buf, buf.length, target, nPort);
//将BUF缓冲区中的数据打包
int i = 0;
for(i = 0; i < nTimes; i++){
ds.send(op);
Thread.sleep(lInterval);
}
//发送数据
ds.close();
//关闭连接
}
catch (Exception ex) {
labInfo.setText(ex.getMessage());
}
}
接收端:
byte[] buf = new byte[1024*10];
int i = 0;
long lBegin = 0;
int nPackNum = Integer.parseInt(textPackNum.getText());
try {
int nPort = Integer.parseInt(textPort.getText());
DatagramSocket ds = new DatagramSocket(nPort);
DatagramPacket ip = new DatagramPacket(buf, buf.length);
//创建接收数据报的实例
ds.setSoTimeout(30000);
while (true)
{
ds.receive(ip);
if(i == 1){
lBegin = System.currentTimeMillis();
}
i++;
//阻塞,直到收到数据报后将数据装入IP中
//labInfo.setText((new String(buf)) + i);
if(i == nPackNum) break;
}
labInfo.setText("共接收包[" + i + "]个,时长:["+ (System.currentTimeMillis() - lBegin) +"]");
}
catch (Exception ex) {
labInfo.setText(ex.getMessage() + "[" + i + "]" + (System.currentTimeMillis() - lBegin));
}
player008
2005-03-23
打赏
举报
回复
就是又想快又想可靠点
abcdhy
2005-03-23
打赏
举报
回复
UDP 本来就是不可靠的协议, 你需要可靠,使用 TCP 了
Datagram
Socket
通信一
NULL 博文链接:https://liaolzy.iteye.com/blog/772962
Java
DataGram
Socket
的Connect方法
问题
Java中的
DataGram
Socket
类是实现
UDP
协议的主要工具,
UDP
是一种无连接的、不可靠的传输层协议,它的特点是轻量级、高效,适用于实时数据传输和不需要确认的通信场景。然而,
DataGram
Socket
类提供了一个`connect()`...
网路编程-
UDP
-
Datagram
Socket
、
Datagram
Packet
本篇将详细探讨
UDP
编程中的关键组件——`
Datagram
Socket
`和`
Datagram
Packet`,以及如何利用它们进行数据的
发
送和接收。 `
Datagram
Socket
`是Java提供的一个类,它代表了
UDP
通信中的一个端点。通过这个类,我们可以...
UDP
.rar_
UDP
_
UDP
侦听_
UDP
发
送_
UDP
接收_java接收端口
在Java中,我们可以使用java.net包中的
Datagram
Socket
类来实现
UDP
的通信。下面将详细介绍如何实现
UDP
的
发
送、接收以及端口监听。 **
UDP
发
送** 在Java中,使用
Datagram
Socket
类创建一个
发
送端的
socket
实例。首先创建...
UDP
.rar_
UDP
_
UDP
协议_
UDP
通信协议_java
udp
在Java中,我们可以使用java.net包下的
Datagram
Socket
类和
Datagram
Packet类来实现
UDP
的网络通信。 ###
UDP
协议特性 1. **无连接**:
UDP
在
发
送数据之前不需要建立连接,每个数据报文都是独立
发
送的,因此它不保证...
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章