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