


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗報告學(xué)院(系)名稱: 計算機與通信工程學(xué)院姓名學(xué)號專業(yè)計算機科學(xué)與技術(shù)班級實驗名稱實驗二:基于 TCP/UDP的 Socket 編程課程名稱計算機網(wǎng)絡(luò)課程代碼實驗時間實驗地點7#219批改意見成績教師簽字:1. 實驗?zāi)康牧私馓捉幼?(socket)實現(xiàn)原理。通過編成理解 TCP、UDP 原理,加深對傳輸層的功能理解。2. 實驗環(huán)境Windows 73. 實驗要求請在以下題目中選擇一個,按照要求完成實驗,并完成實驗報告。實驗可以分組進行,每 2 人一組,在 報告中注明每個成員的分工。編程可以使用任何高級語言,建議使用java 或 C+。(1)基于 TCP / UDP的 socket 編程a)
2、 利用 Java 或 C+語言,分別基于 TCP和 UDP 編寫一個簡單的 Client/Server 網(wǎng)絡(luò)應(yīng)用程序。要 求實現(xiàn)客戶向服務(wù)器傳輸任意一個字符串,服務(wù)器將收到的字符串變換成大寫后傳回客戶。b) 修改上述程序,實現(xiàn)服務(wù)器根據(jù)客戶請求,將服務(wù)器端指定的文件可靠地傳輸給客戶。如果服務(wù)器沒有指定的文件,服務(wù)器將給客戶返回一個信息,通知客戶其請求文件不存在。4. 實驗過程記錄(源程序、測試用例、測試結(jié)果及心得體會等)源程序:(1)服務(wù)端:/#include<>#include<>#include<>#include<iostream>#inc
3、lude<string>#pragmacomment(lib, " ")usingnamespace std;void OutErr(string msg) cout << " 錯誤!發(fā)生在 " <<msg <<endl; fd_set fdread;int ret;DWORD WINAPI ThreadProc(LPVOID lpParameter)SOCKET c=(SOCKET)lpParameter;char data80;UINT ReciveBytes=0;FD_ZERO(&fdread
4、);FD_SET(c,&fdread);doif(ret=select(0,&fdread,NULL,NULL,NULL)=SOCKET_ERROR) OutErr(string( "select ");break;if(ret> 0)if(FD_ISSET(c,&fdread)ReciveBytes=recv(c,data,10,0);if(ReciveBytes=SOCKET_ERROR)break;cout << " 收到字節(jié)數(shù):<<ReciveBytes<<endl;dataReciveBy
5、tes= '0 ' cout <<data <<endl;while(ReciveBytes> 0);FD_CLR(c,&fdread);closesocket(c);return 0;int main()SOCKET server;SOCKET client;SOCKADDR_IN ser_addr,cli_addr;WSADATA wdata;int cliaddrLen=0;UINT port=4000;HANDLE Hnd;DWORD dwThreadID; if(WSAStartup(MAKEWORD(2,0),&wdat
6、a)!=0) OutErr(string( "WSAStartup ");return 1;=AF_INET;=htons(port);/if(server=WSASocket(AF_INET,SOCK_STREAM,IPPROTO,_NIPULL,0,1)=INVALID_SOCKET) if(server=socket(AF_INET,SOCK_STREAM,IPPROTO_IP)=INVALID_SOCKET)OutErr(string( "WSASocket ");return 1;if(bind(server,(SOCKADDR *)&
7、ser_addr,sizeof(SOCKADDR)!=0)OutErr(string( "bind ");return 1;if(listen(server,5)!=0)OutErr(string( "listen ");return 1;while(1)cliaddrLen=sizeof(SOCKADDR);client=accept(server,(SOCKADDR *)&cli_addr,&cliaddrLen);cout << " 客戶 IP: " <<inet_ntoa<<
8、 " ,端口 : " <<ntohs <<endl;ULONG ul=1;if(ioctlsocket(client,FIONBIO,&ul)=SOCKET_ERROR)OutErr(string( "ioctlsocket ");return 1;FD_ZERO(&fdread);/清空集合FD_SET(client,&fdread);/ 將 C 加入到讀取集合中/Hnd=CreateThread(NULL,0,ThreadProc,(LPVOID)client,0,&dwThreadID);/
9、接收數(shù)據(jù)while(TRUE)char data11;int ReciveBytes;/ 這里阻斷程序,知道緩沖區(qū)內(nèi)有可讀數(shù)據(jù)才返回if(ret=select(0,&fdread,NULL,NULL,NULL)=SOCKET_ERROR)/ 套接字錯誤break;if(ret> 0)if(FD_ISSET(client,&fdread)/c 中是否屬于 fdread 集合do/ 循環(huán)讀取,每次接收 10 個字符,直到把緩沖區(qū)中全部取完ReciveBytes=recv(client,data,10,0);if(ReciveBytes=SOCKET_ERROR)/SOCKET
10、錯誤break;dataReciveBytes=0;/ 加上結(jié)束符 cout << " 收到 "<<ReciveBytes<< "個字節(jié) :n "<<data <<endl;while(ReciveBytes> 0);/while 接收數(shù)據(jù)if(Hnd=NULL)CloseHandle(Hnd);closesocket(client);closesocket(server);WSACleanup();return 0;客戶端:/#include <iostream>#inclu
11、de <>#include <string>#pragma comment(lib, " ") using namespace std; void OutErr(string msg) cout << "錯誤發(fā)生: " <<msg<<endl;int main()SOCKET c;SOCKADDR_IN server_addr;WSADATAwsd;stringmsg;stringremote_ip;cout << "輸入對方 IP地址 : "cin>>
12、; remote_ip;if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)OutErr(string( "WSAStartup ");return 1;if(c=WSASocket(AF_INET,SOCK_STREAM,IPPROTO,N_IUPLL,0,1)=INVALID_SOCKET)OutErr(string( "WSASocket ");return 1;=AF_INET;=htons(4000);if(connect(c,(SOCKADDR *)&server_addr,sizeof(SOCKADDR_IN)!=0) OutErr(string( "connect ");return 1;doint SentBytes;cin>> msg;if(msg= "exit ")break;if(SentBytes=send(c,(),(),0)=SOCKET_ERROR)OutErr(string( "send ");break;while(1); closesoc
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度工傷事故賠償補償爭議解決協(xié)議
- 二零二五年度新能源汽車買賣合同分期付款協(xié)議
- 二零二五年度魚塘承包與漁業(yè)多元化經(jīng)營合作協(xié)議
- 二零二五年度新能源研發(fā)合作合伙人協(xié)議書
- 2025年度退房協(xié)議書規(guī)范范本
- 二零二五年度新型購物積分制合作協(xié)議合同
- 二零二五年度房屋租賃市場租金評估合同
- 2025年度離婚子女撫養(yǎng)權(quán)及財產(chǎn)分割協(xié)議書
- 二零二五年度定制木門研發(fā)創(chuàng)新與技術(shù)轉(zhuǎn)移合同
- 二零二五年度房產(chǎn)中介與員工簽訂的業(yè)績目標(biāo)與獎懲制度合同
- 2025年深圳市高三一模英語試卷答案詳解講評課件
- 2025年黑龍江民族職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫一套
- 年產(chǎn)60萬噸摻混肥項目可行性研究報告申請立項
- 2025年2月《公共安全視頻圖像信息系統(tǒng)管理條例》學(xué)習(xí)解讀課件
- 山東省聊城市冠縣2024-2025學(xué)年八年級上學(xué)期期末地理試卷(含答案)
- 2025年江蘇省中職《英語》學(xué)業(yè)水平考試高頻必練考試題庫400題(含答案)
- 敲響酒駕警鐘堅決杜絕酒駕課件
- 2025年濰坊工程職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年濟寧職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 高三一?!吧媾c強弱關(guān)系思辨”審題立意及范文
評論
0/150
提交評論