• 大小: 437KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Java
  • 标签: UDP的ping  

资源简介

广东工业大学计算机网络课程设计的编程实现基于UDP的ping(java)

资源截图

代码片段和文件信息

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PingClient
{
public static void main(String[] args) throws Exception
{
String address = args[0]; //从命令行获得server ip地址
int port = new Integer(args[1]); //从命令行获得server port

Long[] rtt = new Long[10]; //用于存储rtt,用于最后的统计

for (int i = 1; i <= 10; i++) //模拟发送10条请求
{
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss.SS“); //时间戳格式

String sentence = “head: request “ + i + “ \n“ //模拟用的请求数据
+ “playload: PingUDP SequenceNumber:“ + i + “ TimeStamp:“
+ sdf.format(new Date()) + “\n“;

DatagramSocket clientSocket = new DatagramSocket(); //生成client端socket实例

InetAddress IPAddress = InetAddress.getByName(address); //生成ip地址实例

byte[] sendData = new byte[1024]; //用于接收数据的byte数组
byte[] receiveData = new byte[1024]; //用于发送数据的byte数组

sendData = sentence.getBytes(); //将请求数据转换到byte数组

DatagramPacket sendPacket = new DatagramPacket(sendData sendData.length IPAddress port); //生成发送数据包实例

Date sendBefore = new Date(); //记录发送前时间

clientSocket.send(sendPacket); //发送到server端

DatagramPacket receivePacket = new DatagramPacket(receiveData receiveData.length); //生成接收数据包实例

clientSocket.receive(receivePacket); //接收从server返回的数据包

Date receiveAfter = new Date(); //记录接收后的时间 

String modifiedSentence = new String(receivePacket.getData()); //从byte数组转换成String

rtt[i - 1] = receiveAfter.getTime() - sendBefore.getTime(); //计算rtt

System.out.println(“rtt:“ + rtt[i - 1]); //显示rtt

System.out.println(modifiedSentence); //显示从server返回的数据

clientSocket.close(); //关闭socket
}

//统计出平均rtt最大rtt和最小rtt

long sumRtt = 0;
long maxRtt = 0;
long minRtt = rtt[0];
for (int i = 0; i < 10; i++)
{
if (rtt[i] > maxRtt)
{
maxRtt = rtt[i];
}

if (rtt[i] < minRtt)
{
minRtt = rtt[i];
}

sumRtt += rtt[i];
}

System.out.println(“average rtt: “ + sumRtt / 10 + “ millisecond“);
System.out.println(“max rtt: “ + maxRtt);
System.out.println(“min rtt: “ + minRtt);
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2343  2014-01-07 09:58  计算机网络\PingClient.class
     文件        2561  2014-01-05 11:46  计算机网络\PingClient.java
     文件        1392  2014-01-07 09:58  计算机网络\PingServer.class
     文件        1697  2014-01-05 11:46  计算机网络\PingServer.java
     文件      594732  2014-10-26 14:46  计算机网络\计算机网络课设.doc

评论

共有 条评论

相关资源