资源简介
设计要求:
1)按照UDP协议数据包发送方式实现用户端之间的通信。
2)统计包的发送和接收数,计算数据包的丢失数。
3)设计美观易用的图形界面。

代码片段和文件信息
package com.ydq.udp;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketTimeoutException;
import com.ydq.util.UDPUtils;
public class UDPClient {
private String SEND_FILE_PATH = “F:/1.avi“;
private String ipString;
private int port;
int sendCount = 0;
int lostCount = 0;
public UDPClient(String ipString int port) {
this.ipString = ipString;
this.port = port;
}
public void send() {
byte[] buf = new byte[UDPUtils.BUFFER_SIZE];
byte[] receiveBuf = new byte[1024];
RandomAccessFile accessFile = null;
DatagramPacket dpk = null;
DatagramSocket dsk = null;
int readSize = -1;
try {
// 读取文件
accessFile = new RandomAccessFile(SEND_FILE_PATH “r“);
// 定义DatagramPacket设定发送的目的IP及端口
dpk = new DatagramPacket(buf buf.length
InetAddress.getByName(ipString) port);
// 定义DatagramSocket
dsk = new DatagramSocket(UDPUtils.PORT
InetAddress.getByName(“localhost“));
// 设置超时
dsk.setSoTimeout(10000);
// 开始传输文件
while ((readSize = accessFile.read(buf 0 buf.length)) != -1) {
// 将读入缓冲区的数据设置到dpk中
dpk.setData(buf 0 readSize);
// 发送数据包
dsk.send(dpk);
// 记录发送数据包个数
sendCount++;
// 等待接收端返回的确认信息
while (true) {
// 设置接收返回数据的缓冲区为receiveBuf
dpk.setData(receiveBuf 0 receiveBuf.length);
try {
dsk.receive(dpk);
// 确认接收端返回的确认信息
if (!UDPUtils.isEqualsByteArray(UDPUtils.successData
receiveBuf dpk.getLength())) {
// 如果不是确认成功的信息则重发数据包
System.out.println(“非确认接收成功信号,正在重发数据包...“);
dpk.setData(buf 0 readSize);
dsk.send(dpk);
sendCount++;
lostCount++;
} else {
// 确认接收成功,清空缓冲区
receiveBuf = new byte[1024];
break;
}
} catch (SocketTimeoutException e) {
// 接收超时则重发数据包
System.out.println(“等待超时,正在重发数据包...“);
dpk.setData(buf 0 readSize);
dsk.send(dpk);
sendCount++;
lostCount++;
}
}
}
// 所有数据发送成功后向接收端发出信号
System.out.println(“client send exit message ....“);
dpk.setData(UDPUtils.exitData 0 UDPUtils.exitData.length);
dsk.send(dpk);
dpk.setData(receiveBuf 0 receiveBuf.length);
int count = 0;
while (count < 5) {
try {
dsk.receive(dpk);
// 若没收到接收端的确认信息则重发信号
if (!UDPUtils.isEqualsByteArray(UDPUtils.exitData
receiveBuf dpk.getLength())) {
System.out.println(“client Resend exit message ....“);
dsk.send(dpk);
count++;
} else {
// 确认接收成功,清空缓冲区
receiveBuf = new byte[1024];
break;
}
} catch (SocketTimeoutException e) {
// 如果接收超时则重发信号
System.out.println(“client Resend exit message ....“);
dsk.send(dpk);
count++;
}
}
} catch (Exception e) {
e.printStackTrace();
} finall
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2015-04-30 15:23 基于UDP协议的数据包收发程序\udp\.classpath
文件 380 2015-04-30 15:23 基于UDP协议的数据包收发程序\udp\.project
文件 598 2015-04-30 15:23 基于UDP协议的数据包收发程序\udp\.settings\org.eclipse.jdt.core.prefs
文件 3487 2015-06-04 16:11 基于UDP协议的数据包收发程序\udp\bin\com\ydq\udp\UDPClient.class
文件 2624 2015-06-04 16:26 基于UDP协议的数据包收发程序\udp\bin\com\ydq\udp\UDPServer.class
文件 1480 2015-05-29 09:42 基于UDP协议的数据包收发程序\udp\bin\com\ydq\util\UDPUtils.class
文件 1633 2015-06-03 11:59 基于UDP协议的数据包收发程序\udp\bin\com\ydq\view\Mainfr
文件 2402 2015-06-03 11:59 基于UDP协议的数据包收发程序\udp\bin\com\ydq\view\Mainfr
文件 3895 2015-06-04 16:11 基于UDP协议的数据包收发程序\udp\src\com\ydq\udp\UDPClient.java
文件 2372 2015-06-04 16:26 基于UDP协议的数据包收发程序\udp\src\com\ydq\udp\UDPServer.java
文件 1727 2015-05-29 09:42 基于UDP协议的数据包收发程序\udp\src\com\ydq\util\UDPUtils.java
文件 2169 2015-06-03 11:59 基于UDP协议的数据包收发程序\udp\src\com\ydq\view\Mainfr
文件 65513 2016-01-01 15:52 基于UDP协议的数据包收发程序\UDP收发数据包.docx
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\bin\com\ydq\udp
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\bin\com\ydq\util
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\bin\com\ydq\view
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\src\com\ydq\udp
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\src\com\ydq\util
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\src\com\ydq\view
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\bin\com\ydq
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\src\com\ydq
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\bin\com
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\src\com
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\.settings
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\bin
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp\src
目录 0 2015-06-04 18:24 基于UDP协议的数据包收发程序\udp
目录 0 2016-01-01 15:53 基于UDP协议的数据包收发程序
----------- --------- ---------- ----- ----
88581 28
............此处省略1个文件信息
- 上一篇:基于java和mysql的学生信息管理系统
- 下一篇:java秒杀(高并发)视频教程
相关资源
- java 毕业设计 进销存管理系统 源码
- java图片浏览器跨平台运行程序与源码
- 基于java的在线考试系统-毕业设计
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
评论
共有 条评论