天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二
《天津理工大學計算機網絡 實驗二》由會員分享,可在線閱讀,更多相關《天津理工大學計算機網絡 實驗二(6頁珍藏版)》請在人人文庫網上搜索。
1、實驗報告學院(系)名稱:計算機與通信工程學院姓名學號專業計算機科學與技術班級實驗名稱實驗二:基于TCP/UDP的Socket編程課程名稱計算機網絡課程代碼實驗時間實驗地點7#219批改意見成績教師簽字: 1. 實驗目的了解套接字(socket)實現原理。通過編成理解TCP、UDP原理,加深對傳輸層的功能理解。2. 實驗環境Windows 73. 實驗要求請在以下題目中選擇一個,按照要求完成實驗,并完成實驗報告。實驗可以分組進行,每2人一組,在報告中注明每個成員的分工。編程可以使用任何高級語言,建議使用java或C+。(1)基于TCP / UDP的socket編程a) 利用Java或C+語言,分。
2、別基于TCP和UDP編寫一個簡單的Client/Server網絡應用程序。要求實現客戶向服務器傳輸任意一個字符串,服務器將收到的字符串變換成大寫后傳回客戶。b) 修改上述程序,實現服務器根據客戶請求,將服務器端指定的文件可靠地傳輸給客戶。如果服務器沒有指定的文件,服務器將給客戶返回一個信息,通知客戶其請求文件不存在。4. 實驗過程記錄(源程序、測試用例、測試結果及心得體會等)源程序:(1)服務端:/server.cpp #include #include #include #include #include #pragma comment(lib, WS2_32.lib ) using nam。
3、espace std; void OutErr(string msg) cout 0) if(FD_ISSET(c,&fdread) ReciveBytes=recv(c,data,10,0); if(ReciveBytes=SOCKET_ERROR) break; cout 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 po。
4、rt=4000; HANDLE Hnd; DWORD dwThreadID; if(WSAStartup(MAKEWORD(2,0),&wdata)!=0) OutErr(string( WSAStartup ); return 1; ser_addr.sin_addr.S_un.S_addr=inet_addr( 0.0.0.0 ); ser_addr.sin_family=AF_INET; ser_addr.sin_port=htons(port); /if(server=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,1)=INVALID_。
5、SOCKET) if(server=socket(AF_INET,SOCK_STREAM,IPPROTO_IP)=INVALID_SOCKET) OutErr(string( WSASocket ); return 1; if(bind(server,(SOCKADDR *)&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); c。
6、lient=accept(server,(SOCKADDR *)&cli_addr,&cliaddrLen); cout 0) if(FD_ISSET(client,&fdread)/c中是否屬于fdread集合 do/循環讀取,每次接收10個字符,直到把緩沖區中全部取完 ReciveBytes=recv(client,data,10,0); if(ReciveBytes=SOCKET_ERROR) /SOCKET錯誤 break; dataReciveBytes=0;/加上結束符 cout 0); /while接收數據 if(Hnd=NULL) CloseHandle(Hnd); close。
7、socket(client); closesocket(server); WSACleanup(); return 0; 客戶端:/client.cpp #include #include #include #pragma comment(lib, ws2_32.lib ) using namespace std; void OutErr(string msg) cout remote_ip; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) OutErr(string( WSAStartup ); return 1; if(c=WSASocket(AF_INET,S。
8、OCK_STREAM,IPPROTO_IP,NULL,0,1)=INVALID_SOCKET) OutErr(string( WSASocket ); return 1; server_addr.sin_addr.S_un.S_addr=inet_addr(remote_ip.c_str(); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(4000); if(connect(c,(SOCKADDR *)&server_addr,sizeof(SOCKADDR_IN)!=0) OutErr(string( connect )。
9、; return 1; do int SentBytes; cin msg; if(msg= exit )break; if(SentBytes=send(c,msg.c_str(),msg.size(),0)=SOCKET_ERROR) OutErr(string( send ); break; while(1); closesocket(c); WSACleanup(); return 0; 測試結果:心得體會:通過這次的實驗,鞏固了我以前基礎的java知識,了解Socket類與ServerSocket類的作用與用法,會用一些Socket類與ServerSocket類的重要方法,初步了解java中用來實現客戶端TCP操作Socket類,這個類本身使用直接代碼通過主機操作系統的本地TCP棧進行通信。6 / 6。
總結
以上是生活随笔為你收集整理的天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u大侠pe系统桌面计算机,详解各种PE启
- 下一篇: 3 软件测试对象,查找条件对象By—Se