資源簡(jiǎn)介
廣東工業(yè)大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)的編程實(shí)現(xiàn)基于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]; //用于存儲(chǔ)rtt,用于最后的統(tǒng)計(jì)
for?(int?i?=?1;?i?<=?10;?i++) //模擬發(fā)送10條請(qǐng)求
{
SimpleDateFormat?sdf?=?new?SimpleDateFormat(“yyyy-MM-dd?hh:mm:ss.SS“); //時(shí)間戳格式
String?sentence?=?“head:?request?“?+?i?+?“?\n“ //模擬用的請(qǐng)求數(shù)據(jù)
+?“playload:?PingUDP?SequenceNumber:“?+?i?+?“?TimeStamp:“
+?sdf.format(new?Date())?+?“\n“;
DatagramSocket?clientSocket?=?new?DatagramSocket(); //生成client端socket實(shí)例
InetAddress?IPAddress?=?InetAddress.getByName(address); //生成ip地址實(shí)例
byte[]?sendData?=?new?byte[1024]; //用于接收數(shù)據(jù)的byte數(shù)組
byte[]?receiveData?=?new?byte[1024]; //用于發(fā)送數(shù)據(jù)的byte數(shù)組
sendData?=?sentence.getBytes(); //將請(qǐng)求數(shù)據(jù)轉(zhuǎn)換到byte數(shù)組
DatagramPacket?sendPacket?=?new?DatagramPacket(sendData?sendData.length?IPAddress?port); //生成發(fā)送數(shù)據(jù)包實(shí)例
Date?sendBefore?=?new?Date(); //記錄發(fā)送前時(shí)間
clientSocket.send(sendPacket); //發(fā)送到server端
DatagramPacket?receivePacket?=?new?DatagramPacket(receiveData receiveData.length); //生成接收數(shù)據(jù)包實(shí)例
clientSocket.receive(receivePacket); //接收從server返回的數(shù)據(jù)包
Date?receiveAfter?=?new?Date(); //記錄接收后的時(shí)間?
String?modifiedSentence?=?new?String(receivePacket.getData()); //從byte數(shù)組轉(zhuǎn)換成String
rtt[i?-?1]?=?receiveAfter.getTime()?-?sendBefore.getTime(); //計(jì)算rtt
System.out.println(“rtt:“?+?rtt[i?-?1]); //顯示rtt
System.out.println(modifiedSentence); //顯示從server返回的數(shù)據(jù)
clientSocket.close(); //關(guān)閉socket
}
//統(tǒng)計(jì)出平均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?=?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);
}
}
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????????2343??2014-01-07?09:58??計(jì)算機(jī)網(wǎng)絡(luò)\PingClient.class
?????文件????????2561??2014-01-05?11:46??計(jì)算機(jī)網(wǎng)絡(luò)\PingClient.java
?????文件????????1392??2014-01-07?09:58??計(jì)算機(jī)網(wǎng)絡(luò)\PingServer.class
?????文件????????1697??2014-01-05?11:46??計(jì)算機(jī)網(wǎng)絡(luò)\PingServer.java
?????文件??????594732??2014-10-26?14:46??計(jì)算機(jī)網(wǎng)絡(luò)\計(jì)算機(jī)網(wǎng)絡(luò)課設(shè).doc
評(píng)論
共有 條評(píng)論