




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學生學號17實驗課成績學生 實 驗 報 告書實驗課程名稱通信原理開 課學 院計算機科學與技術學院指導教師姓名劉維學 生姓 名陳鑫宇學生專業班級軟件工程 41201520 6學年第2學期?實驗課程名稱: _通信原理 _ _實驗項目名稱采用 Winsoc 在有線局域網上得點- 點通信實驗成績實 驗者陳鑫宇專業班級軟件 401組別同 組 者葉旺實驗日期年月日一部分 :實驗預習報告( 包括實驗目得、意義,實驗基本原理與方法,主要儀器設備及耗材,實驗方案與技術路線等)實驗目得與要求“采用 Wisok 在有線局域網上得點點通信”熟悉 VB6、 0 得控件與界面設計 , 進而熟悉 Winsock 得有關控件
2、及編程方法。在了解所用得兩個工作站與服務器得 IP 地址后 , 采用 VB6、得控件與 Wisock控件編寫并調試在有線局域網上得點點通信程序。具有點對點通信功能,任意客戶端之間能夠發送消息。編譯語言與環境1、編程語言 C/C+等均可;本次實驗采用+語言版本2、安裝 s201或更高版本得Windo s 系統 p機網絡編程就是通過使用套接字來達到進程間通信目得得編程,Socket編程就是網絡編程得主流工具,Sock I就是實現進程間通信得一種編程設施, 也就是一種為進程間提供底層抽象得機制, 提供了訪問下層通信協議得大量系統調用與相應得數據結構。具體流程如上圖所示 . 1、建立連接1)服務程序調
3、用socke創建一個新得套接字, 并在傳輸層實體中分配表空間, 返回一個文件描述符用于以后調用中使用該套接字; 調用 bn將一個地址賦予該套接字,使得遠程客戶程序能訪問該服務程序; 調用 lis en 分配數據空間,以便存儲多個用戶得連接建立請求;調用 acce t 將服務程序阻塞起來 , 等待接收客戶程序發來得連接請求 當傳輸層實體接收到建立連接得TPU 時, 新創建一個與原來得套接字相同屬性得套接字并返回其文件描述符。服務程序創建一個子進程處理此次連接 , 然后繼續等待發往原來套接字得連接請求。客戶程序調用 socke創建一個新得套接字, 并在傳輸層實體中分配表空間 , 返回一個文件描述符
4、用于在以后得調用中使用該套接字; 調用 onnc阻塞客戶程序,傳輸層實體開始建立連接, 當連接建立完成時 , 取消阻塞 ;2、數據傳輸雙方使用 s d 與 ec v完成數據得全雙工發送。、釋放連接每一方使用 close 原語單獨釋放連接。關鍵代碼示例 :服務器端:/ 定義服務器端c etsockServ r = soce (AF_I , SOCK TR AM,0 ) ; /設置服務器端oc et?addrServ r、 sin_a d、 _、 S_addr = to l( NAD R_A Y); /本機 I ? dd Ser、 in_fa ly = F_ N T; ddr ever、 sin_
5、port = ns(6000);? /將服務器 s c et 綁定在本地端口b nd( ockServer, ( SOCADDR ) &addrSe ve, siz f(SOCKAD R); isten 監聽端口?l ten(so kSer er, 10); 0 為等待連接數目 rintf( ”服務器已啟動 : n 監聽中、 ” ); ?len = si (SOCKADDR);?whi (1) ?/acce t 會阻塞進程,直到有客戶端連接上來為止?sock lientac e (soc Serve , (SOCKA R* ) &a lien ,&le );?/當客戶端連接上來時,拼接字符串?
6、s n f( endBuf, ”歡迎 p:%s 得用戶連接, 這里就是陳鑫宇得服務器 ,歡迎使用 n” , ine _ntoa(addrCl ent、 _addr);? / 向客戶端發送字符串 end( ockClient, se B f,trle( sendBu ) + 1,) ;/獲取客戶端返回得數據?re v(socClient , recv , 10, );/ 打印客戶端返回得數據? print (” %sn” , recvBu ); /關閉 s ket? losesock t(sockCl ent);客戶端:新建服務器端 scoet? sockServ r = o ket(AF_IN
7、 T, O K_STRE M ,0); / 定義要連接得服務端地址ad Server、 si ddr 、 S_un、 S addr= net_ ddr(10 、 139、 14、 80” ); /目標 IP (00、 64、 5、 119 就是本機地址)addrS r er、 sin_f ly= AF INET ;協議類型就是INET?ad rSrv r、 s n_ ort = tons( 000); / 連接端口123?讓 sockClient 連接到服務端?co nect( sock erver,(SOCKA DR * )& dr erv r, sizeof( CK DDR) ;?從服務端
8、獲取數據? ec( ckSere , r c Buf, 1 0, 0); / 打印數據?printf( 服務器端輸入: , recvBuf ) ;?mes g = 大家好 ,我就是葉旺”;prin f (向服務器發送:sn, message);?/ 發送數據到服務端 nd( ockS rver, m ssag,st n( m ssage) ,0);/ 關閉 soc et lo soket(s c Ser er);?W C enu( );第二部分 :實驗過程記錄 (可加頁 )(包括實驗原始數據記錄,實驗現象記錄,實驗過程發現得問題等)服務器 ip 地址為 92 、168、 1、110客戶端發送得
9、信息成功傳輸到了服務器并顯示了出來,第三部分結果與討論 (可加頁)一、實驗結果分析(包括數據處理、實驗現象分析、影響因素討論、綜合分析與結論等)打開服務器程序,然后點擊開始通信按鈕,打開客戶端程序在客戶端輸入數據,數據成功從客戶端傳輸到了服務器端,并成功顯示了出來,實驗成功二、小結、建議及體會通過本次實驗能夠感受到網絡在實際當中得運用, 使我對網絡編程有了更深得概念。同時讓我發現自己知識結構得欠缺。雖然基本功能已經實現,但還就是存在很多不穩定得問題尚待解決。此次實驗就是對 oke得一個應用, 讓我更深得了解了Socket 函數得作用及使用方法。實驗過程中遇到了很多得問題, 例如 : 程序只能通
10、信一次. 剛開始我以為建立得 socket 套接口只要建立一次并更新連接地址就可以多次使用. 當初不知道問題存在得在于這 , 在程序加入很多錯誤報告代碼 , 發現再客戶端再次connec得時候返回負值。在網上查瞧很多相關代碼之后, 發現問題所在 , 把建立 socke得代碼寫進客戶端得循環體中,每次通信都重新建立so ket 套接口就可以了。采用 nso k 在無線局域網上得點- 點群發通實驗成績實驗項目名稱信實 驗 者陳鑫宇專業班級軟件 401組別同 組 者葉旺,楊彪實驗日期年月日一部分 :實驗預習報告 (包括實驗目得、意義 ,實驗基本原理與方法,主要儀器設備及耗材,實驗方案與技術路線等)實
11、驗目得與要求1、“采用 Winok 在無線局域網上得點點群發通信、修改實驗 1 得界面設計 , 設計為多個接收地址得群發界面( 因為群發就是一對多得循環點點通信 ), 并修改相應得程序。3、在了解所用得 3 個工作站與服務器得 I 地址后 , 采用 B6、得控件與 Wino控件編寫并調試在無線局域網上得點 - 點群發通信程序。編譯語言與環境1、本次實驗采用C+編程語言版本2、安裝 vs 1得 ndows系統 pc 機問題分析點到群得通信就就是客戶端將消息發送至多個服務器端。相當于在客戶端加入一個循環 , 依次給不同 i 得服務器發送消息。在實驗一得基礎上 , 修改服務器端得消息響應方法可以實現
12、點到群得通信。實驗一中點到點得通信原理就是, 客戶端將消息發送到服務器端,然后服務器端反饋客戶端相應得信息。在本實驗中可以修改為客戶端將消息發送至多個服務器端, 然后接受傳送回來得信息。相當于在客戶端加入一個循環, 依次給不同 ip 得服務端發送消息。關鍵代碼示例 :服務器端:/ server、cp :實現文件/ #dei _CR URE O_WARNINGS inclu e std fx 、”#in l de 通信實驗、 h#nlude”server 、h#nludeafxdi o e、 h”#nclud WiSock2、h#ncu es io 、#pragma ent ( b,”ws _3
13、2、 b)staticintnum = 0 ;/ serv r對話框IMPLEMENT NMI( server ,Cia o Ex)ser er : srve ( CWd Parent/ =NLL* )? :Cia og x(IDD_DILOG , arent )serve : : se vr( )voi erver : DData xchange(DataEcha ge pX)? CDal gEx:: oDataEx ng( p ) ;BEIN_MESSAGE_MAP( sever ,CDial gEx)? ON_B_CLICED( IDCB TTO 1, & erve :OnBnClick
14、edButt n1)ON_WM_TIMER()ED_M GE P( ) / s rver 消息處理程序voi ever :OnBnCli ke on1( )? /TODO: 在此添加控件通知處理程序代碼/SetTimer( , 00, N L);? in er ; / 錯誤信息 int en;char sedBuf100 ;發送至客戶端得字符串 char recvBu 100 ; / 接受客戶端放回得字符串SCKET sock eve ; / 服務器端 cketOKAD _I ad Ser r; / 服務器端地址SOC E c et; / 客戶端 S keSO KADDRIN addrCl e
15、n;/ 客戶端地址WAATA ws D ; /win k 結構體WORDwesi quested; / in o版本? ? ?/ 配置 i ow Soc 版本? wVersinR eted =MA WR(2 , 2);/ 初始化 i dow Sockrr = WS ta tup (wVe Requested, &wsaData );f( r ! = 0)? 啟動錯誤,程序結束r t r ;/*確認 Soc DL 支持、 2* if( LOBY(waDat 、 Vrsion ) != 2 HI YE(w aData、wersio ) != 2)/ 啟動錯誤? ? WSACleanup();/ 終
16、止 W Sok 2LL 得使用? eturn ;/ 定義服務器端 s cketsckServ r = socke ( AF_I ET, SO STREAM, 0);設置服務器端 socet? addrServer 、s ddr 、S_un、S_d r hto l( IN D ANY); 本機 P? adrServer 、 in_ am ly= A_NET;adr e er 、s n_port =to s( 6000) ;/ 將服務器 soc et 綁定在本地端口? in ( sock e er ,( OCADR*)&add Serve ,sizeo ( S KADDR);/L sten 監聽端
17、口iste (sockServer , 5); /5為等待連接數目p ntf( ”服務器已啟動 :n監聽中、n ) ;n = ize f (SO KADDR) ;/ acc pt 會阻塞進程,直到有客戶端連接上來為止? s k ie t = accept(socker er, (SOCKADDR* ) d Client, en) ;? / 當客戶端連接上來時, 拼接字符串? sprintf(send uf , 歡迎 :%s得用戶連接,發送成功, 歡迎使用 n ”, ine ntoa (addrCnt 、sin_addr ));/ 向客戶端發送字符串? send(sockCl ent, send
18、Buf,str e(s nduf) +,);? / 獲取客戶端返回得數據? ev( ckClie t, rev uf,100,);? / 打印客戶端返回得數據CS r ng text;? et= r cvBu; tDl ItemText ( D_EDIT1,text );? / 關閉 oce? cosesocket(sockC i nt);客戶端 :#inc udeWinsock2、#incl detd o、h#pra ment( lib , w2 2、 ib ) inc d ”s ax、#i clude 通信實驗、 h#ncludecl et 、h in lu e ” fxdia oge、
19、h / clie t 對話框IMPLM N_ M C( ie t , ia ogEx) cli nt : : cient (CWd* paent / =ULL / ):CDiao x( DD_ ALOG, pPaent )client:cle t () i clie : : oD aExchane( CDataEx ang * X)? Cia ogEx::DoDataEx h g( pDX);BEGN_M S GE_MAP( c ient ,CDialogEx )ON BN_CLI ED( I CBUT O1, & cliet :On n licked utton )END_MESSAGEM
20、( )/ clie 消息處理程序voidclien : : OnnC ick Button1( ) ? ODO: 在此添加控件通知處理程序代碼har * ip1 ”192、 68、1、 10”;? c r *ip2 = 92、 68、 1、111”;Str ng te t;Gt l I emText( IDC_EI 1,ext);? i nLen th = text、 GetL ngh() ;intnByt = Wide ha Mult Byt ( CP_AC, 0, tex, nLength , NU L, 0,NLL,N L);ch r * ssage= newchan ytes + 1;
21、memse( mes ge, 0 ,nLeng +);ide harToMultiByte(C OECP,0, text,nL ngth , mesage,Byte , NUL, NUL);essag n y s = 0;n r ;ch rre vBuf10 ;O KETs ckClient;/客戶端c ktSOCKD _IN addrSe ver;/服務端地址WSADATA s Daa;? WOD wVesi nRe ted; wVerso Requested MAKEWR( 2, 2 );e SAStart (w ersionR ques d, &ws Dat) ;i ( rr!=)? ?
22、 r turn ;if ( OB TE( saData 、wVeri ) != 2 | HIBT(wsaDaa、 wers ) != 2)?/ 啟動錯誤,程序結束 ACea p() ;? ? re n;? / 新建客戶端 scoket?sockClie t =ocket( AF_ ET, SOCK_STEAM, 0);?/ 定義要連接得服務端地址 dr erver、sin_addr、S_un、S_addr = et_addr (ip ); /目標 IP ( 5、 0、170、28就是本機地址)addr erver 、 sin_f m= AF_INET;/ 協議類型就是 INETd r erve
23、 、 sin_port = htns( 00) ; / 連接端口 124? ? ? ? ?/讓sockClie t 連接到 服務端cnect (sock ient,( SOC*) add Srver,si eof ( SCKADDR);?/發送數據到服務端? nd( ockCl e , m ssag , st ( mess ge) + ,0);從服務端獲取數據? r cv( okClien , recB f ,1 0, );/打印數據e = recvB ;SetDgItemText ( E IT2 ,t xt );/關閉 ocket? clos socke ( sckC nt ); ACl n p();? / 定義要連接得服務端地址二? a rSe er 、si _a r 、 Sun、S a r = inet addr(ip ) ; /目標 I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安全工程師考試應急管理及事故調查模擬試卷
- 兒童營養需求與飲食指南
- 2025年場(廠)內專用機動車輛維修人員考試試卷(汽車維修行業品牌知名度提升策略研究)
- 2025年勞動保障協理員(初級)考試試卷:勞動保障基礎知識與社會保障法規應用案例分析集
- 2025年風力發電項目提案報告范文
- 2025年電子商務師(中級)職業技能鑒定試卷:電子商務平臺數據分析與客戶行為預測試題
- 農村家庭農場的經營管理協議
- 2025年消防工程師考試題庫-消防設施設備選型與防火分區試題
- 大貨車司機聘用協議
- 2025年輔導員招聘考試題庫:校園文化建設案例分析與評估試題
- 離散裝配行業MES案例
- 1.3探索三角形全等的條件第7課時 蘇科版八年級數學上冊
- 蘇教版四年級科學下冊復習方法
- 南昌市產業投資集團有限公司人才招聘筆試真題2023
- GB/T 4706.11-2024家用和類似用途電器的安全第11部分:快熱式熱水器的特殊要求
- 壯族文化宣傳介飲食服飾建筑風俗習慣特點傳統節日課件
- 牛津譯林版英語八年級下冊期末復習各單元話題寫作范文背誦
- 2024CSCO胃腸間質瘤診療指南解讀
- FZ∕T 61002-2019 化纖仿毛毛毯
- GB/T 3880.3-2024一般工業用鋁及鋁合金板、帶材第3部分:尺寸偏差
- 預激綜合征的護理
評論
0/150
提交評論