資源簡介
使用Java語言,利用UDP通信,實現(xiàn)客戶端與服務(wù)器之間的通信,服務(wù)器支持多客戶端連接,采用多線程技術(shù)。每當客戶端向服務(wù)器發(fā)送請求后,服務(wù)器將為客戶端發(fā)送文件。

代碼片段和文件信息
/**
?*?
?*?程序名稱:基于UDP的航班顯示系統(tǒng)的設(shè)計與實現(xiàn)(客戶端)
?*?功??????能:向服務(wù)器發(fā)送請求,并接收從服務(wù)器發(fā)來的數(shù)據(jù)
?*?作??????者:MEICUOERSHIWO
?*?完成日期:2016年12月18號
?*?版本號:x1.0
?*?
?*/
package?my.exp5;
import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
import?java.net.SocketException;
import?java.net.UnknownHostException;
public?class?FlightClient?{
private?String?remoteHost?=?“l(fā)ocalhost“;?//?遠程主機
private?int?remotePort?=?9999;?//?遠程端口
private?DatagramSocket?clientDatagramSocket;?//?用于與服務(wù)器通信
private?DatagramPacket?recieveDatagramPacket;?//?用于接收服務(wù)器發(fā)來的數(shù)據(jù)
/*主函數(shù)*/
public?static?void?main(String[]?args)?{
new?FlightClient().talk();
}
/*構(gòu)造函數(shù)*/
public?FlightClient()?{
try?{
clientDatagramSocket?=?new?DatagramSocket();
clientDatagramSocket.setReceiveBufferSize(16777216);
recieveDatagramPacket?=?new?DatagramPacket(new?byte[512]?512);
}?catch?(SocketException?e)?{
e.printStackTrace();
}
}
/*與服務(wù)器進行通信*/
private?void?talk()?{
request();?//?向服務(wù)器發(fā)送請求
String?string?=?null;
int?countLineNum?=?0;
while(!(string?=?recieve()).equals(“no?data!“))?{?//?接收服務(wù)器發(fā)來的數(shù)據(jù)
System.out.println(string);
countLineNum++;
}
System.out.println(“服務(wù)器總共發(fā)來“?+?countLineNum?+?“行數(shù)據(jù)“);
clientDatagramSocket.close();
}
/*向服務(wù)器發(fā)送請求*/
private?void?request()?{
byte[]?req?=?“ready“.getBytes();
try?{
DatagramPacket?requestPacket?=?new?DatagramPacket(reqreq.lengthInetAddress.getByName(remoteHost)remotePort);
clientDatagramSocket.send(requestPacket);
}?catch?(UnknownHostException?e)?{
e.printStackTrace();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
/*接收服務(wù)器發(fā)來的數(shù)據(jù)*/
private?String?recieve()?{
try?{
clientDatagramSocket.receive(recieveDatagramPacket);?//?接收數(shù)據(jù)包的數(shù)據(jù),放到clientPacket中
}?catch?(IOException?e)?{
e.printStackTrace();
}
String?rString?=?new?String(recieveDatagramPacket.getData()?0?recieveDatagramPacket.getLength());?//?將包中數(shù)據(jù)轉(zhuǎn)換為字符串
return?rString;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????301??2016-12-14?08:47??Experiment5\.classpath
?????文件????????387??2016-12-14?08:47??Experiment5\.project
?????文件????????598??2016-12-14?08:47??Experiment5\.settings\org.eclipse.jdt.core.prefs
?????文件???????2688??2016-12-24?20:38??Experiment5\bin\my\booktest\Client.class
?????文件???????1931??2016-12-24?20:38??Experiment5\bin\my\booktest\Server.class
?????文件???????2618??2016-12-24?20:38??Experiment5\bin\my\exp5\FlightClient.class
?????文件????????576??2016-12-24?20:38??Experiment5\bin\my\exp5\FlightServer$1.class
?????文件???????1248??2016-12-24?20:38??Experiment5\bin\my\exp5\FlightServer$2.class
?????文件???????3322??2016-12-24?20:38??Experiment5\bin\my\exp5\FlightServer.class
?????文件???????2262??2016-12-24?20:38??Experiment5\bin\my\exp5\ServiceRunnable.class
?????文件????1526602??2016-12-15?18:12??Experiment5\fds_data(lab4,5).txt
?????文件???????2247??2017-01-09?18:43??Experiment5\src\my\exp5\FlightClient.java
?????文件???????3361??2017-01-09?18:43??Experiment5\src\my\exp5\FlightServer.java
?????文件???????1369??2016-12-22?21:45??Experiment5\src\my\exp5\ServiceRunnable.java
?????目錄??????????0??2016-12-27?21:41??Experiment5\bin\my\booktest
?????目錄??????????0??2016-12-27?21:41??Experiment5\bin\my\exp5
?????目錄??????????0??2016-12-27?21:41??Experiment5\src\my\exp5
?????目錄??????????0??2016-12-27?21:41??Experiment5\bin\my
?????目錄??????????0??2016-12-27?21:41??Experiment5\src\my
?????目錄??????????0??2016-12-27?21:41??Experiment5\.settings
?????目錄??????????0??2016-12-27?21:41??Experiment5\bin
?????目錄??????????0??2016-12-27?21:41??Experiment5\src
?????目錄??????????0??2016-12-27?21:41??Experiment5
-----------?---------??----------?-----??----
??????????????1549510????????????????????23
評論
共有 條評論