試驗(yàn)二 網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)_第1頁(yè)
試驗(yàn)二 網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)_第2頁(yè)
試驗(yàn)二 網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)_第3頁(yè)
試驗(yàn)二 網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)_第4頁(yè)
試驗(yàn)二 網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——試驗(yàn)二網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)湖南大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)試驗(yàn)報(bào)告二

1/22

《計(jì)算機(jī)網(wǎng)絡(luò)》

試驗(yàn)報(bào)告

信息安全2023年4月1日

湖南大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)試驗(yàn)報(bào)告二

試驗(yàn)二網(wǎng)絡(luò)基礎(chǔ)編程試驗(yàn)

一、試驗(yàn)?zāi)康?/p>

通過(guò)本試驗(yàn),學(xué)習(xí)采用Socket(套接字)設(shè)計(jì)簡(jiǎn)單的網(wǎng)絡(luò)數(shù)據(jù)收發(fā)程序,理解應(yīng)用數(shù)據(jù)包是如何通過(guò)傳輸層進(jìn)行傳送的。二、試驗(yàn)內(nèi)容

2.1、編寫(xiě)TCP進(jìn)行數(shù)據(jù)發(fā)送的簡(jiǎn)單程序(java)

TCPClient.javTaCPServer.java

2.2、編寫(xiě)UDP進(jìn)行數(shù)據(jù)發(fā)送的簡(jiǎn)單程序(java)

UDPServer.javaUDPClient.java

2.3多線程\\線程池對(duì)比

TCPEchoClient.java

TCPEchoServerThread.javaTCPEchoServerPool.javaTCPEchoServer.java

2.4寫(xiě)一個(gè)簡(jiǎn)單的chat程序,編程語(yǔ)言不限。三、試驗(yàn)程序

(1)TCP客戶端TcpClient.javaimportjava.io.*;import.*;

publicclassTcpClient{

publicstaticvoidmain(Stringargv[])throwsException{Stringsentence;//定義客戶消息

StringmodifiedSentence;//定義服務(wù)器消息

InetAddressaddress=InetAddress.getLocalHost();//獲取本機(jī)端口

BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));//創(chuàng)立客戶輸入流

//創(chuàng)立一個(gè)Scoket實(shí)例:構(gòu)造函數(shù)向指定的遠(yuǎn)程主機(jī)和端口建立一個(gè)TCP連接。address.getHostName()為本機(jī)IP地址;6789為T(mén)CP服務(wù)器端口

SocketclientSocket=newSocket(address.getHostName(),6789);//客戶套接字//通過(guò)套接字的輸入輸出流(I/Ostreams)進(jìn)行通信

DataOutputStreamoutToServer=newDataOutputStream(clientSocket.getOutputStream());//創(chuàng)立客戶端到服務(wù)器的輸出流

BufferedReaderinFromServer=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()));//創(chuàng)立服務(wù)端輸入流

2/22

湖南大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)試驗(yàn)報(bào)告二

sentence=inFromUser.readLine();//客戶端讀取客戶輸入消息

outToServer.writeBytes(sentence+'\\n');//客戶端發(fā)送消息到服務(wù)器端

modifiedSentence=inFromServer.readLine();//客戶端接收來(lái)自服務(wù)器的消息System.out.println(\/客戶端顯示服務(wù)器發(fā)送過(guò)來(lái)的消息

clientSocket.close();//客戶端關(guān)閉套接字}}

(2)TCP服務(wù)器端TcpServer.javaimportjava.io.*;import.*;

publicclassTcpServer{

publicstaticvoidmain(StringargV[])throwsException{StringclientSentence;//定義接收的消息

StringcapitalizedSentence;//定義發(fā)送的消息

ServerSocketwelcomeSocket=newServerSocket(6789);

//創(chuàng)立一個(gè)ServerSocket實(shí)例,并指定本地端口,偵聽(tīng)該指定端口收到的連接while(true){

SocketconnectionSocket=welcomeSocket.accept();

//調(diào)用ServerSocket的accept()方法以獲取下一個(gè)客戶端連接,基于新建立的客戶端連接,創(chuàng)立一個(gè)Socket實(shí)例,并由accept()方法返回。

BufferedReaderinFromClient=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));//創(chuàng)立客戶端輸入流

DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());//創(chuàng)立服務(wù)器輸出流

//使用所返回的Socket實(shí)例的InputStream和OutputStream與客戶端進(jìn)行通信。clientSentence=inFromClient.readLine();//接收客戶發(fā)送的信息

capitalizedSentence=clientSentence.toUpperCase()+'\\n';//轉(zhuǎn)換接收到的信息,小寫(xiě)變大寫(xiě)

outToClient.writeBytes(\輸出給客戶端}}}

(3)UDP通信服務(wù)器端UDPServer.javaimportjava.io.*;import.*;

publicclassUDPServer{

publicstaticvoidmain(StringargV[])throwsException{

DatagramSocketserverSocket=newDatagramSocket(9876);//構(gòu)造數(shù)據(jù)包套接字并將其綁定到主機(jī)上的端口9876

byte[]receiveData=newbyte[1024];//服務(wù)器從客戶端接收到的信息byte[]sendData=newbyte[1024];//服務(wù)器發(fā)送給客戶端的信息while(true){

3/22

湖南大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)試驗(yàn)報(bào)告二

DatagramPacketreceivePacket=newDatagramPacket(receiveData,receiveData.length);//創(chuàng)立從客戶端數(shù)據(jù)包

serverSocket.receive(receivePacket);//服務(wù)器從客戶端接收數(shù)據(jù)包

Stringsentence=newString(receivePacket.getData());//服務(wù)器接開(kāi)啟數(shù)據(jù)包得到消息

InetAddressIPAddress=receivePacket.getAddress();//獲取客戶端的IP地址

intport=receivePacket.getPort();//獲取客戶端端口

StringcapitalizedSentence=sentence.toUpperCase();//將接收的信息轉(zhuǎn)為大寫(xiě)

sendData=capitalizedSentence.getBytes();//轉(zhuǎn)換后的消息//服務(wù)器發(fā)送給客戶端的數(shù)據(jù)包,將轉(zhuǎn)換后的消息打包

DatagramPacketsendPacket=newDatagramPacket(sendData,sendData.length,IPAddress,port);

serverSocket.send(sendPacket);//服務(wù)器發(fā)送數(shù)據(jù)包給客戶端}}}

(4)UDP通信客戶端UDPClient.javaimportjava.io.*;import.*;

publicclassUDPClient{

publicstaticvoidmain(Stringargv[])throwsException{byte[]receiveData=newbyte[1024];//客戶端接收的消息byte[]sendData=newbyte[1024];//客戶端發(fā)送的消息

BufferedReaderinFromReader=newBufferedReader(newInputStreamReader(System.in));//客戶輸入流

DatagramSocketclientSocket=newDatagramSocket();//客戶端數(shù)據(jù)包套接字InetAddressIPAddress=InetAddress.getLocalHost();//獲取本機(jī)IP地址Stringsentence=inFromReader.readLine();//客戶端讀取用戶所輸入的消息sendData=sentence.getBytes();//復(fù)制到要發(fā)送的消息

//客戶端發(fā)送的數(shù)據(jù)包,這里將客戶端要發(fā)送的消息,客戶端的IP地址,端口打包DatagramPacketsendPacket=newDatagramPacket(sendData,sendData.length,IPAddress,9876);

clientSocket.send(sendPacket);//客戶端套接字發(fā)送數(shù)據(jù)包

//客戶端接收的數(shù)據(jù)包,數(shù)據(jù)包包含從服務(wù)器接收的消息,消息長(zhǎng)度

DatagramPacketreceivePacket=newDatagramPacket(receiveData,receiveData.length);

clientSocket.receive(receivePacket);//客戶端接收數(shù)據(jù)包

StringmodifiedSentence=newString(receivePacket.getData());//將接收的數(shù)據(jù)包解開(kāi)

System.out.println(\\客戶端顯示數(shù)據(jù)包里的消息clientSocket.close();//關(guān)閉套接字

4/22

湖南大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)試驗(yàn)報(bào)告二

}}

(5)通過(guò)TCP協(xié)議與回饋服務(wù)器(echoserver)進(jìn)行通信的客戶端TCPEchoClient.javaimportjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;import.ServerSocket;import.Socket;

import.SocketAddress;publicclassTCPEchoServer{

privatestaticfinalintBUFSIZE=32;

publicstaticvoidmain(String[]args)throwsIOException{if(args.length!=1)//獲取啟動(dòng)服務(wù)的端口

thrownewIllegalArgumentException(\intservPort=Integer.parseInt(args[0]);//分派一個(gè)端口用于啟動(dòng)server端

ServerSocketservSock=newServerSocket(servPort);intrecvMsgSize;

byte[]receiveBuf=newbyte[BUFSIZE];while(true){

SocketclntSock=servSock.accept();//接收客戶端的主動(dòng)連接

SocketAddressclientAddress=clntSock.getRemoteSocketAddress();System.out.println(\InputStreamin=clntSock.getInputStream();OutputStreamout=clntSock.getOutputStream();while((recvMsgSize=in.read(rece

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論