天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二
《天津理工大學(xué)計算機(jī)網(wǎng)絡(luò) 實(shí)驗(yàn)二》由會員分享,可在線閱讀,更多相關(guān)《天津理工大學(xué)計算機(jī)網(wǎng)絡(luò) 實(shí)驗(yàn)二(6頁珍藏版)》請在人人文庫網(wǎ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)境Windows 73. 實(shí)驗(yàn)要求請在以下題目中選擇一個,按照要求完成實(shí)驗(yàn),并完成實(shí)驗(yàn)報告。實(shí)驗(yàn)可以分組進(jìn)行,每2人一組,在報告中注明每個成員的分工。編程可以使用任何高級語言,建議使用java或C+。(1)基于TCP / UDP的socket編程a) 利用Java或C+語言,分。
2、別基于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 #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/循環(huán)讀取,每次接收10個字符,直到把緩沖區(qū)中全部取完 ReciveBytes=recv(client,data,10,0); if(ReciveBytes=SOCKET_ERROR) /SOCKET錯誤 break; dataReciveBytes=0;/加上結(jié)束符 cout 0); /while接收數(shù)據(jù) 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; 測試結(jié)果:心得體會:通過這次的實(shí)驗(yàn),鞏固了我以前基礎(chǔ)的java知識,了解Socket類與ServerSocket類的作用與用法,會用一些Socket類與ServerSocket類的重要方法,初步了解java中用來實(shí)現(xiàn)客戶端TCP操作Socket類,這個類本身使用直接代碼通過主機(jī)操作系統(tǒng)的本地TCP棧進(jìn)行通信。6 / 6。
總結(jié)
以上是生活随笔為你收集整理的天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u大侠pe系统桌面计算机,详解各种PE启
- 下一篇: 3 软件测试对象,查找条件对象By—Se