《《計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)》實(shí)驗(yàn)報(bào)告-軟-...(總7頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《《計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)》實(shí)驗(yàn)報(bào)告-軟-...(總7頁(yè))(7頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、浙江大學(xué)城市學(xué)院實(shí)驗(yàn)報(bào)告
課程名稱 計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)
實(shí)驗(yàn)項(xiàng)目名稱 實(shí)驗(yàn)六 傳輸層網(wǎng)絡(luò)編程
學(xué)生姓名 沈小明 專業(yè)班級(jí) 計(jì)算0904 學(xué)號(hào) 30901228
實(shí)驗(yàn)成績(jī) 指導(dǎo)老師(簽名 ) 日期 2011-12-13
一. 實(shí)驗(yàn)?zāi)康暮鸵?
1. 通過實(shí)現(xiàn)使用Java Socket進(jìn)行通信的UDP客戶端和服務(wù)器來獲得關(guān)于使用Java Socket網(wǎng)絡(luò)編程的經(jīng)驗(yàn);
2. 通過實(shí)現(xiàn)使用Java Sock
2、et進(jìn)行通信的TCP客戶端和服務(wù)器來獲得關(guān)于使用Java Socket網(wǎng)絡(luò)編程的經(jīng)驗(yàn)。
二. 實(shí)驗(yàn)內(nèi)容、原理及實(shí)驗(yàn)結(jié)果與分析
1. UDP編程(參考電子講義“網(wǎng)絡(luò)編程參考資料-傳輸層.pdf”及教材“第2章 Socket編程”)
1.1閱讀 “網(wǎng)絡(luò)編程參考資料-傳輸層.pdf”中 11.2部分,輸入11.2.4部分“最簡(jiǎn)單的UDP程序”的源代碼(UdpSend.java和UdpRecv.java)并在機(jī)器上編譯運(yùn)行通過(注意:要根據(jù)自己的機(jī)器IP地址修改源代碼)。
【程序源代碼】
import .*;
public class UdpSend {
public static
3、 void main(String [] args)throws Exception
{
DatagramSocket ds=new DatagramSocket();
String str="hello word";
DatagramPacket dp =new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("10.66.25.172"),3000);
ds.send(dp);
ds.close();
}
}import .*
4、;
public class UdpRecv {
public static void main(String [] args)throws Exception{
DatagramSocket ds=new DatagramSocket(3000);
byte [] buf=new byte[1024];
DatagramPacket dp =new DatagramPacket(buf,1024);
ds.receive(dp);
String strRecv=new String(dp.getData(),0,dp.getLength())+"
5、from"+dp.getAddress().getHostAddress()+":"+dp.getPort();
System.out.println(strRecv);
ds.close();
Thread.sleep(5000);
}
}
【實(shí)驗(yàn)結(jié)果與分析】
2. TCP編程(參考電子講義“網(wǎng)絡(luò)編程參考資料-傳輸層.pdf”及教材“第2章 Socket編程”)
2.1閱讀 “網(wǎng)絡(luò)編程參考資料-傳輸層.pdf”中 11.3 部分,輸入11.3.3部分“簡(jiǎn)單的TCP服務(wù)器程序”的源代碼(TcpS
6、erver.java)并在機(jī)器上編譯運(yùn)行,然后通過在命令行中輸入“telnet 自己的IP地址 8001”進(jìn)行測(cè)試。
【程序源代碼】
import .*;
import java.io.*;
public class TcpServer {
public static void main(String [] args){
try
{
ServerSocket ss=new ServerSocket(8001);
Socket s=ss.accept();
InputStream ips=s.getInputStream();
Output
7、Stream ops=s.getOutputStream();
ops.write("welcome to www.it315.org!".getBytes());
byte [] buf=new byte[1024];
int len=ips.read(buf);
System.out.println(new String(buf,0,len));
ips.close();
ops.close();
s.close();
ss.close();
}catch(Exception e){e.printSt
8、ackTrace();}
}
}
【實(shí)驗(yàn)結(jié)果與分析】
2.2閱讀 “網(wǎng)絡(luò)編程參考資料-傳輸層.pdf”中 11.3 部分,輸入11.3.4 部分“TCP服務(wù)器程序”(Tcp_Server.java)以及11.3.5客戶端程序的源代碼(Tcp_Client.java)并在機(jī)器上編譯運(yùn)行,客戶端測(cè)試命令為“java Tcp_Client 自己的IP地址 8001”。
【程序源代碼】
import .*;
import java.io.*;
class Servicer implements Runnable {
Socket s;
publi
9、c Servicer(Socket s){
this.s=s;
}
public void run(){
try{
InputStream ips = s.getInputStream();
OutputStream ops = s.getOutputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(ips));
DataOutputStream dos=new DataOutputStream(ops);
while(true){
String s
10、trWord=br.readLine();
if(strWord.equalsIgnoreCase("quit"))
break;
String strEcho=(new StringBuffer(strWord).reverse()).toString();
dos.writeBytes(strWord+"---->"+strEcho+System.getProperty("line.separator"));
}
br.close();
dos.close();
s
11、.close();
}catch(Exception e){e.printStackTrace();}
}
}
class TcpServer{
public static void main(String[] args)
{
try{
ServerSocket ss=new ServerSocket(8001);
while(true){
Socket s=ss.accept();
new Thread(new Servicer(s)).start();
}
}catch(Exception e){e.printS
12、tackTrace();}
}
}
import .*;
import java.io.*;
public class TcpClient {
public static void main(String[] args){
try{
if(args.length<2){
System.out.println("Usage:java TcpClient ServerIP ServerPort");
return;
}
Socket s=new Socket(InetAddress.getByName(arg
13、s[0]),Integer.parseInt(args[1]));
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
BufferedReader brKey=new BufferedReader(new InputStreamReader(System.in));
DataOutputStream dos=new DataOutputStream(ops);
BufferedReader brNet = new BufferedReader(new InputStr
14、eamReader(ips));
while(true){
String strWord=brKey.readLine();
dos.writeBytes(strWord+System.getProperty("line.separator"));
if(strWord.equalsIgnoreCase("quit"))
break;
else
System.out.println(brNet.readLine());
}
dos.close();
brNet.close();
15、
brKey.close();
s.close();
}catch(Exception e){e.printStackTrace();}
}
}
【實(shí)驗(yàn)結(jié)果與分析】
3. Ethereal抓包分析
用Ethereal軟件截獲上面三個(gè)程序運(yùn)行時(shí)客戶機(jī)和服務(wù)器之間發(fā)送的數(shù)據(jù)包,并且根據(jù)截獲的數(shù)據(jù)包內(nèi)容進(jìn)行分析。
【實(shí)驗(yàn)結(jié)果與分析】
Send
Receive
Tcp
三. 討論、心得
本次實(shí)驗(yàn)通過實(shí)現(xiàn)使用Java Socket進(jìn)行通信的UDP客戶端和服務(wù)器和TCP客戶端和服務(wù)器來獲得關(guān)于使用Java Socket網(wǎng)絡(luò)編程的經(jīng)驗(yàn);