天津理工大學(xué)計算機網(wǎng)絡(luò)實驗二_第1頁
天津理工大學(xué)計算機網(wǎng)絡(luò)實驗二_第2頁
天津理工大學(xué)計算機網(wǎng)絡(luò)實驗二_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論