• 大小: 72KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: Java
  • 标签: java  UDP  

资源简介

设计要求: 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\Mainframe$jb1ActionListener.class

     文件       2402  2015-06-03 11:59  基于UDP协议的数据包收发程序\udp\bin\com\ydq\view\Mainframe.class

     文件       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\Mainframe.java

     文件      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个文件信息

评论

共有 条评论