天津理工大學(xué)計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)二_第1頁
天津理工大學(xué)計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)二_第2頁
天津理工大學(xué)計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)二_第3頁
天津理工大學(xué)計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)二_第4頁
天津理工大學(xué)計算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)二_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、人和以吟實(shí)驗(yàn)報告 學(xué)院(系)名稱: 計算機(jī)與通信工程學(xué)院 姓名 學(xué)號 專業(yè) 計算機(jī)科學(xué)與技術(shù) 班級 實(shí)驗(yàn)名稱 實(shí)驗(yàn)二:基于 TCP/UDP的Socket編程 課程名稱 計算機(jī)網(wǎng)絡(luò) 課程代碼 實(shí)驗(yàn)時間 實(shí)驗(yàn)地點(diǎn) 7#219 批改意見 成績 教師簽字: 1. 實(shí)驗(yàn)?zāi)康?了解套接字(socket)實(shí)現(xiàn)原理。通過編成理解TCP、UDP原理,加深對傳輸層的功能理解。 2. 實(shí)驗(yàn)環(huán)境 Win dows 7 3. 實(shí)驗(yàn)要求 請在以下題目中選擇一個,按照要求完成實(shí)驗(yàn),并完成實(shí)驗(yàn)報告。實(shí)驗(yàn)可以分組進(jìn)行,每2人一組,在 報告中注明每個成員的分工。編程可以使用任何高級語言,建議使用java或C+。 (1)基于 TC

2、P / UDP 的 socket 編程 a)利用Java或C+語言,分別基于 TCP和UDP編寫一個簡單的 Client/Server網(wǎng)絡(luò)應(yīng)用程序。 要求實(shí)現(xiàn)客戶向服務(wù)器傳輸任意一個字符串,服務(wù)器將收到的字符串變換成大寫后傳回客戶。 b)修改上述程序,實(shí)現(xiàn)服務(wù)器根據(jù)客戶請求,將服務(wù)器端指定的文件可靠地傳輸給客戶。如果 服務(wù)器沒有指定的文件,服務(wù)器將給客戶返回一個信息,通知客戶其請求文件不存在。 4. 實(shí)驗(yàn)過程記錄(源程序、測試用例、測試結(jié)果及心得體會等) 源程序: (1 )服務(wù)端: /server.cpp #i nclude #i nclude #i nclude #i nclude #in

3、elude #pragmacomme nt(lib, WS2_32.lib ) usingn amespacestd; void OutErr(stri ng msg) cout 錯誤!發(fā)生在 msg 0) if(FD_ISSET(c, if(ReciveBytes=SOCKET_ERROR) break; cout 收到字節(jié)數(shù): ” ReciveBytes e ndl; dataReciveBytes= 0 ; cout data 0); FD_CLR (c, closesocket(c); return 0; intmai n() SOCKET server; SOCKET clie nt

4、; SOCKADDR_IN ser_addr,cli_addr; WSADATA wdata; intcliaddrLe n=0; UINT port=4000; HANDLEHnd; DWORDdwThreadID; if(WSAStartup(MAKEWORD(2,0), return 1; ser_addr.sin_addr.S_ un .S_addr=i net_addr( 0.0.0.0 ); ser_addr.s in _family=AF_INET; ser_addr.s in _port=ht on s(port); if(server=WSASocket(AF_INET,SO

5、CK_STREAM,IPPROTO_IP,NULL,0,1)=INVALID_SOCKET) if(server=socket(AFN ET,SOCK_STREAM,IPPROTO_IP)=INVALID_SOCKET) OutErr(stri ng( WSASocket ); return 1; if(bi nd(server,(SOCKADDR*) return 1; if(liste n(server,5)!=0) OutErr(stri ng( listen ); return 1; while(1) cliaddrLe n=sizeof(SOCKADDR); clie nt=acce

6、pt(server,(SOCKADDR*) cout 客戶 IP: inet_ntoa(cli_addr.sin_addr) ,端口 : ntohs(cli_addr.sin_port) 0) if(FD_ISSET(client, if(ReciveBytes=SOCKET_ERROR) /SOCKET 錯誤 break; dataReciveBytes=O; 加上結(jié)束符 cout 收到” ReciveBytes 個字節(jié):n data 0); /while接收數(shù)據(jù) if(Hn d=NULL) CloseHa ndle(H nd); closesocket(clie nt); closesoc

7、ket(server); WSAClea nup(); return 0; 客戶端: /clie nt.cpp #i nclude #i nclude #in clude #pragmacomment(lib, ws2_32.lib ) usingn amespacestd; void OutErr(stri ng msg) cout 錯誤發(fā)生:” msg e ndl; intmai n() SOCKET c; SOCKADDR_IN server_addr; WSADATAwsd; stri ngmsg; stri ngremote_ip; cout remote_ip; if(WSASta

8、rtup(MAKEWORD(2,2), return 1; if(c=WSASocket(AFN ET,SOCK_STREAM,IPPROTO_IP,NULL,0,1)=INVALID_SOCKET) OutErr(stri ng( WSASocket ); return 1; server_addr.s in _addr.S_ un. S_addr =in et_addr(remote_ip.c_str(); server_addr.sin_family=AFN ET; server_addr.s in _port=ht on s(4000); if(conn ect(c,(SOCKADDR*) return 1; do int Se ntBytes; cin msg; if(msg= exit )break; if(Se ntBytes=se nd(c,msg.c_str(),msg.size(),0)=SOCKET_ERROR) OutErr(stri ng( se nd ); break; while(1); closesocket(c); WSAClea nup(); return 0; 測試結(jié)果: 心得體會: 通過這次的實(shí)驗(yàn),鞏固

溫馨提示

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

評論

0/150

提交評論