實(shí)驗(yàn)一WinSock點(diǎn)對(duì)點(diǎn)通信程序_第1頁
實(shí)驗(yàn)一WinSock點(diǎn)對(duì)點(diǎn)通信程序_第2頁
實(shí)驗(yàn)一WinSock點(diǎn)對(duì)點(diǎn)通信程序_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)WinSock點(diǎn)對(duì)點(diǎn)通信程序?qū)嶒?yàn)?zāi)康模篧inSock是Windows操作系統(tǒng)下的Socket編程接口,通過 WinSock函數(shù)庫 可以實(shí)現(xiàn)基于TCP/IP協(xié)議的進(jìn)程之間通信。理解基于WinSock的客戶/服務(wù)器概念 掌握使用WinSock進(jìn)行編程 的方法了解常見WinSock開發(fā)模式的使用實(shí)驗(yàn)內(nèi)容:基于WinSock開發(fā)一個(gè)簡單的客戶/服務(wù)器文本傳輸程序,客戶端 能夠發(fā)送由標(biāo)準(zhǔn)輸入得到的文本,服務(wù)器能夠接收并將其顯示在標(biāo)準(zhǔn)輸出上。實(shí)驗(yàn)環(huán)境:程序運(yùn)行環(huán)境為以太網(wǎng),采用TCP/IP協(xié)議棧,網(wǎng)絡(luò)操作系統(tǒng)為Windowso程序開發(fā)環(huán)境為Visual C+6.0版本實(shí)驗(yàn)步驟:步驟1需求分析

2、程序功能為:(1) 服務(wù)器可以接受任何客戶的連接(2) 服務(wù)器在同一時(shí)刻只能與一個(gè)客戶通信,直到該客戶退出才可以接 收下一個(gè)客戶。(3) 客戶程序使用命令行參數(shù)指定服務(wù)器地址(4) 客戶端輸入的文本都發(fā)送給服務(wù)器(5) 客戶使用Ctrl+C鍵停止發(fā)送,關(guān)閉連接步驟2服務(wù)器程序開發(fā)以Visual C+Console控制臺(tái)程序的形式編寫服務(wù)器程序,服 務(wù)器 程序采用循環(huán)服務(wù)器的模式,不支持多線程操作。步驟3客戶端程序開發(fā)以Visual C+Console控制臺(tái)程序的形式編寫客戶程序,與服 務(wù)器建 立連接后開始接收標(biāo)準(zhǔn)輸入的文本,并發(fā)送到服務(wù)器。步驟4編譯和執(zhí)行程序在Visual C+開發(fā)環(huán)境中包含

3、必要的頭文件和連接的WinSock庫, 分別進(jìn)行客戶程序和服務(wù)器程序的編譯和連接,生成可執(zhí)行文件。首先運(yùn) 行服務(wù)器程序,然后運(yùn)行客戶程序,測試程序運(yùn)行結(jié)果是否符合要求。實(shí)驗(yàn)結(jié)果:首先服務(wù)器端開始工作,進(jìn)入監(jiān)聽端口的狀態(tài),當(dāng)客戶端向他發(fā)送 連接請(qǐng)求時(shí),建立連接。服務(wù)器端:忙;伙三下學(xué)習(xí)宿蕪丨計(jì)算機(jī)網(wǎng)緒或?qū)乙则?yàn)一 :Win: o ”點(diǎn)對(duì)點(diǎn)謹(jǐn)信程序gw 齬擁時(shí)02inn for a client ta connect(等待連接)程序設(shè)置的服務(wù)器端的地址是:端口號(hào)是20??蛻舳?(服務(wù)器端)當(dāng)客戶端輸入服務(wù)器的地址和端口以后就連接上了,當(dāng)客戶端發(fā)送數(shù)據(jù)時(shí),服務(wù)器端能看到發(fā)送的數(shù)據(jù)。發(fā)送數(shù)據(jù)以后服務(wù)器端

4、與客戶端的情況:D:A三下學(xué)習(xí)相關(guān)計(jì)算機(jī)確實(shí)踐遵一: D;伏三下字習(xí)相關(guān)計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐侯殮服條雷II土I卜:12700.3地 土1 卜:127-0-0.2端口豈20ijD: 20Uait ingr for a c lient to connect.左關(guān),45456Client Connected.Bytes Sent11 5接收二4545&發(fā)送:22222Bytes Recu/5Sent; 5接收=22222發(fā)送:222222Bymw Recu: 5Bytes Sent: 6接收:222222發(fā)送:Bytes Recu: E(當(dāng)客戶端發(fā)送數(shù)據(jù)后服務(wù)器端的情況)實(shí)驗(yàn)總結(jié):通過本次的實(shí)驗(yàn)讓

5、我對(duì)win sock的服務(wù)器和客戶的概念有了一定 的認(rèn) 識(shí),特別的對(duì)于客戶與服務(wù)器之間建立連接的過程有了進(jìn)一步的認(rèn)識(shí),而且 我也初步掌握了 win sock編程的方法,這些都讓我受益匪淺。在這次的實(shí)驗(yàn)中,我僅僅用到了 win sock編程的一些簡單功能,還有很多的其他的功能沒有使用到,其它很多功能都需要我們課下研究,在以后的學(xué)習(xí)中不斷去掌握。Client :#inelude <stdio.h> #include <winsock2.h>#pragma comment(lib, "ws2_32.lib")void main() char ip15; i

6、nt port;printf(n 地址:H); scanf(H%su,ip);printf(n 端口 :H); scanf(n%dn,&port);初始化Winsock.WSADATA wsaData;int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );if (iResult != NO_ERROR ) printf(HError at WSAStartup()nH);建立 socket socket.SOCKET client;client = socket( AFJNET, SOCK_STREAM, IPPROTO_TCP

7、 );if ( client = INVALID_SOCKET ) printf( "Error at socket(): %ldn”, WSAGetLastError(); WSACIeanup(); return;/ 連接到服務(wù)器 sockaddrjn clientservice;if ( connect( client, (SOCKADDR*) &clientService, sizeof(clientService) ) = SOCKET ERROR) printf( "Failed to connectAn"); WSACIeanup();ret

8、urn;發(fā)送并接收數(shù)據(jù)int bytesSent;int bytesRecv = SOCKET ERROR;char sendbuf32 =,H,;while(1)(printf(u 發(fā)送:H); scanf(H%sH,sendbuf);bytesSent = send( client, sendbuf, strlen(sendbuf), 0 ); if(sendbufO=,J&&sendbuf1=,J) break;printf( "Bytes Sent: %ldnn", bytesSent);return;Server :#inelude <std

9、io.h> #include vwinsock2.h> #pragma comment(lib, Hws2_32.libH) void main() /初始化WSADATA wsaData;int iResult = WSAStartup( MAKEWORD(2,2), &wsaData ); if (iResult != NO_ERROR ) printf(”Error at WSAStartup()nH);建立 socketSOCKET server;server = socket( AFJNET, SOCK_STREAM, IPPROTO_TCP );if ( ser

10、ver = INVALID_SOCKET ) printf( "Error at socket(): %ldn", WSAGetLastError(); WSACIeanup();return;/ 綁定 socket sockaddrjn service;printf(n 服務(wù)器地址:端 口號(hào):20nH);if ( bind( server, (SOCKADDR*) &service, sizeof(service) ) = SOCKET_ERROR )(printf( "bind() failedAn"); closesocket(server

11、):return;/ 監(jiān)聽 socketif (listen( server, 1 ) = SOCKET_ERROR ) printf( "Error listening on socket.n");接受連接 SOCKET AcceptSocket;prin tf( "Waiting for a die nt to conn ect.n”); while (1) AcceptSocket = SOCKETERROR;while ( AcceptSocket = SOCKET ERROR ) AcceptSocket = accept( server, NULL, NULL );printf( HClient Connected.nn'f);server = AcceptSocket;break;發(fā)送接受數(shù)據(jù)int bytesSent;int bytesRecv = SOCKET ERROR;char recvbuf32 = m,;while(1)(byt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論