`

udp sender 精确到毫秒

阅读更多
1。源文件。
package sender;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Properties;

public class UDPSender{
	private String filename;
	private String host;
	private int port;
	private int interval=0;
	private int packetSize = 512;
	int loop = 0;
	private Date time = null;
	
	private SocketAddress destAddress;
	private DatagramSocket clientSocket = null;
	
	public UDPSender() {
		Properties properties = new Properties();
		try {
			properties.load(new FileInputStream("configuration.properties"));
			packetSize = Integer.parseInt(properties.getProperty("packetsize"));
			host = properties.getProperty("host");
			port = Integer.valueOf(properties.getProperty("port"));
			filename = properties.getProperty("file");
			interval = Integer.parseInt(properties.getProperty("interval"));
			loop = Integer.parseInt(properties.getProperty("loop"));
			time = parseTime(properties.getProperty("time"));
			
			System.out.println(
					new StringBuilder("sender properties:\n")
					.append("packet size:").append(packetSize).append("\n")
					.append("host:").append(host).append("\n")
					.append("port:").append(port).append("\n")
					.append("file:").append(filename).append("\n")
					.append("interval:").append(interval).append("\n")
					.append("loop:").append(loop).append("\n")
					.append("time:").append(toStandTimeFormat()).append("\n")
					.toString()
			);

			destAddress = new InetSocketAddress(host,port);
			clientSocket = new DatagramSocket();
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}

	private String toStandTimeFormat(){
		StringBuffer sb = new StringBuffer();
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(time);
		sb.append(calendar.get(Calendar.YEAR) + "-");
		sb.append((calendar.get((Calendar.MONTH)) + 1) + "-");
		sb.append(calendar.get(Calendar.DAY_OF_MONTH) + " ");
		sb.append(calendar.get(Calendar.HOUR_OF_DAY) + ":");
		sb.append(calendar.get(Calendar.MINUTE) + ":");
		sb.append(calendar.get(Calendar.SECOND) + ":");
		sb.append(calendar.get(Calendar.MILLISECOND));
		
		return sb.toString();
	}
	
	private Date parseTime(String time){
		String regex = "yyyyMMddHHmmssSSS";
		Date result = null;
		try {
			result = new SimpleDateFormat(regex).parse(time);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		return result;
	}
	
	public void send(){
		if(loop <= 0){
			for(;;){
				startSendOneTime();
			}
		}else{
			for(int i=0;i<loop;i++){
				startSendOneTime();
			}
		}
	}
	
	private void startSendOneTime() {
		try {
			File  file = new File(filename);
			System.out.println("file size: " + file.length());
			InputStream in = new FileInputStream(file);
			byte[] buff = new byte[packetSize];
			int len;
			while((len=in.read(buff))>0){
				if(clientSocket!=null){
					clientSocket.send(new DatagramPacket(buff,0,len,destAddress));
					System.out.println("send " + len + "bytes");
				}
				if(interval>0){
					Thread.sleep(interval);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return;
		}
	}
	
	public Date getTime() {
		return time;
	}

	public static void main(String[] args) {
		UDPSender sender = new UDPSender();
		Date time = sender.getTime();
		
		
		long timeInMills = time.getTime() - System.currentTimeMillis();
		if(timeInMills <= 0){
			System.out.println("The time you offered has passed...");
			try {
				Thread.sleep(4000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			return;
		}else{
			System.out.println("You have " + (timeInMills / 1000) + "s left." );
		}
		
		for(;;){
			if(System.currentTimeMillis() >= time.getTime()){
				break;
			}
		}
		sender.send();
	}
}



2。 需要的 文件有四个,见附件。


  • 大小: 14.4 KB
分享到:
评论

相关推荐

    UDPSender发包器工具

    UDPSender是一款强大的UDP(User Datagram Protocol)测试和压力测试工具,主要针对网络通信性能进行评估。UDP是一种无连接的、不可靠的传输层协议,常用于需要高速传输但对数据完整性要求不高的应用,如在线游戏、...

    UDPSender 发包工具 upd syslog

    在UDP Sender中,你可以配置不同的数据包,并通过UDP协议将其发送到目标syslog服务器。这种工具常用于测试网络环境中的syslog服务器接收能力,验证日志传递流程,或者在开发阶段调试syslog兼容性问题。 Syslog协议...

    UDPSender发包工具.zip

    UDPSender发包工具是一款专用于发送数据流到指定服务器的实用程序,主要应用于网络安全测试、网络性能评估以及协议分析等领域。在理解UDPSender的工作原理和应用之前,我们需要先了解UDP(用户 datagram 协议)的...

    UDPSender UDP发包工具

    UDPSender UDP发包工具,支持自动及手动发送,可以进行压力测试等

    发包器_udp_sender.rar

    6. **回声功能**:某些UDP Sender可能具有回声功能,即当接收到响应时,会将这些响应显示出来,这对于调试和测试很有帮助。 7. **可定制性**:用户可能可以根据需求调整各种参数,如TTL(Time To Live)、数据包的...

    UDPSender发包器

    UDPSender发包器是一款开源的UDP(User Datagram Protocol)数据传输工具,专为网络通信测试和调试设计。它不仅能够发送UDP数据包,还具备接收数据包的功能,使得用户可以全面地测试网络的UDP通信性能。在众多的发包...

    UDP_Sender调试助手

    UDP sender,通过UDP协议发送信息的软件。

    UDPSender.rar

    UDPSender是一款基于UDP协议的实用工具,主要用于UDP数据包的发送,它具备自动和手动发送功能,能够进行网络性能的压力测试。 在UDPSender这款工具中,用户可以: 1. **配置目标IP和端口**:在使用UDPSender时,你...

    秒表计时,精确到毫秒

    在C#编程中,开发一个能够精确到毫秒的秒表计时器是一个常见的需求,尤其是在性能测试或者游戏开发等场景。本篇文章将详细介绍如何利用C#语言实现这样的功能,并结合给定的“秒表计时”项目进行讨论。 首先,我们...

    UDPSender UDP测试工具

    UDPSenderUDP测试工具

    VB 精确到毫秒的计时器 demo

    "VB 精确到毫秒的计时器 demo" 是一个专为此目的设计的示例程序,它利用了VB内置的日期和时间功能,实现了对时间间隔的精确测量,精度达到了毫秒级别。 在VB中,我们通常使用 `DateTime.Now` 属性来获取当前的系统...

    Notepad、UDPSender

    标题中的“Notepad”通常指的是Windows操作系统中内置的简单文本编辑器,而“UDPSender”则可能是一个用于发送UDP(User Datagram Protocol)数据包的程序。这些元素结合在一起,暗示我们将探讨Java编程语言在创建...

    udpSender.rar_Ethernet

    标题中的“udpSender.rar_Ethernet”表明这是一个与以太网和UDP(用户数据报协议)相关的项目,可能是一个软件模块或程序,用于在Spartan3E FPGA(现场可编程门阵列)上实现UDP发送功能。Spartan3E是Xilinx公司的一...

    udp sender and receiver_UDP_plenty61q_

    综上所述,"udp sender and receiver_UDP_plenty61q_"是一个关于使用UDP协议在本地进行数据通信的项目,涉及了UDP套接字编程的基本操作,包括创建、绑定、发送和接收数据,以及相关的错误处理和优化策略。...

    UdpSender_0602.tar.gz

    本项目"UdpSender_0602.tar.gz"显然就是一个使用QT库中的QUdpSocket进行UDP消息发送端的实现。 QUdpSocket是QT网络模块中的一个重要类,它允许我们创建一个UDP套接字来发送和接收数据。在描述中提到的"QUdpSocket...

    UDPSENDER.rar_用delphi实现udp传输

    标题"UDPSENDER.rar_用delphi实现udp传输"表明这是一个使用Delphi编程环境来创建的UDP数据发送程序。Delphi中的网络编程通常基于 Indy 或 Winsock 组件库,这两个库都提供了对UDP协议的支持。 描述中提到“载入数据...

    udpsender:udp测试脚本

    自述文件 ## udpsender 它发送udp数据包用于测试目的。 指定文件的每一行成为数据包的有效负载。 ##用法 它需要GNU Netcat( )软件。 ./udpsender.sh ipaddress端口并发间隔文件 祝您编码愉快!

    UDP-Sender.zip_labview_labview udp

    在这个"UDP-Sender.zip_labview_labview udp"项目中,"点对点和广播通信举例_UDP Sender.vi"是一个基于LabVIEW的UDP发送器实例,用于演示如何使用LabVIEW进行UDP通信,包括点对点(P2P)和广播两种方式。 点对点...

    PacketSender_tcpudp_x64_v7.0.6.rar

    PacketSender,TCPUDP,64BIT

Global site tag (gtag.js) - Google Analytics