资源简介
设计要求:
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和mysql的学生信息管理系统
- 西电软院java上机大作业全
- JavaATM机取款模拟程序
- mail.jar+activation.jar+additional.jar
- java打砖块源码加注释
- jxl完美实现Excel加水印(内及jar包,基
- javadbf.jar-修复中文乱码-部分生僻字显
- 数据结构课设 java版 校园导航系统
- Java实现音视频通讯
- pcap文件解析,并且按照五元组分类
- javaweb 图片上传
- 学生成绩管理系统java源代码
- commons-collections-3.2.jar - Java包页
- 基于rxtx的java串口通信
- Elasticsearch5.5.1 JAVA客户端TransportClien
- java-client-5.0.4.jar
- java实现聊天室功能全部代码,有界面
- JAVA 银行系统
- java实现的爬虫,亲自编写,测试通过
- 拼单词游戏
- 智能问答java代码
- 详尽 java经典笔试题集带答案
- Java基础教程-李兴华
- 将class文件转换为java代码
- java版logstash
- Java Servlet 4.0 API.chm
- Java并发核心知识体系精讲.txt
- 简单的书店java代码
- 员工管理系统集合版Java代码
评论
共有 条评论