999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VC++環境下的UDP網絡通信實現

2017-08-16 13:22:45雷津趙寅
電子測試 2017年13期
關鍵詞:網絡通信

雷津,趙寅

(1.中船重工第719研究所軍代室,湖北武漢,420060;2.中船重工第719研究所,湖北武漢,420060)

VC++環境下的UDP網絡通信實現

雷津1,趙寅2

(1.中船重工第719研究所軍代室,湖北武漢,420060;2.中船重工第719研究所,湖北武漢,420060)

隨著計算機技術,網絡技術,通信技術的迅速發展,越來越多的網絡信息走入了大眾的生活,對網絡信息的傳輸設計和實現技術要求也越來越高。本文分析了利用套接字實現網絡通信的原理,研究了基于VC的UDP網絡編程的設計與實現。

網絡編程;UDP;同步傳輸

0 引言

隨著Internet對當今社會日漸重要的作用,Windows下的網絡程序也越來越顯得重要。正確使用Windows Socket,便于不同地址下的進程得以在Windows環境下順利進行各種網絡通信。

Windows Socket(簡稱WinSock)規范是Windows平臺下定義的可以兼容二進制數據傳輸的網絡編程接口,是基于美國加州伯克利分校的BSD UNIX Sockets實現的。此規范包括BSD格式的Sockets函數和Windows擴展函數。它是一個基于Socket模型的API,包括許多為UNIX開發的Berkeley風格的庫函數和針對Windows的擴展庫函數,使程序員能充分地利用Windows消息驅動機制進行編程。WinSock規范定義了一個TCP/IP網絡上開發Windows程序的接口標準,它以DLL來實現Socket接口。WinSock位于TCP/IP協議棧和應用程序的中間,管理與TCP/IP協議的接口。程序利用WinSock及其對底層硬件(串行口或網卡)的控制,來實現網絡通信。MicroSoft公司在此基礎上創建了WinSock控件,專門用于Windows接口,與Sockets完全兼容。

WinSock可以實現很強大的網絡功能,但編程較難,涉及很多的庫函數。在此,用WinSock控件實現網絡通信,可方便地開發各種網絡應用程序。

1 Client/Server(客戶機/服務器)模型

圖1 C/S請求和應答請求的基本過程

在網絡編程中最常用的方案便是Client/Server (客戶機/服務器)模型[1]。在這種方案中客戶應用程序向服務器程序請求服務。一個服務程序通常在一個眾所周知的地址監聽對服務的請求,也就是說,服務進程一直處于休眠狀態,直到一個客戶向這個服務的地址提出了連接請求。在這個時刻,服務程序被“驚醒”并且為客戶提供服務-對客戶的請求作出適當的反應。通信過程如圖1所示。

2 套接字

套接字(socket)是網絡計算機與應用程序之間發送和接收數據方式的一種抽象描述[2]。用來實現主機和主機通信的一個接口,完成主機間的通信操作。它位于協議之上,屏蔽了底層的協議,能夠實現各種類型的通信操作。它是網絡通信中應用程序對應的進程和網絡協議之間的接口。Socket套接字分為兩種類型,一種是數據報套接字,一種是數據流套接字。

2.1 基于TCP協議的網絡通信

數據流套接字是基于顯式連接的套接字。采用TCP通信協議,提供沒有記錄邊界的雙向字節數據流,具有可靠的發送順序,沒有復制數據。數據流的接收也是可靠的,適合處理大量數據的傳輸。在基于數據流套接字的通信模型中,服務器Socket需要等待客戶端Socket向其提出的建立連接的申請,一旦接收到客戶端的連接請求,服務器返回一個新的套接字描述符,通過該描述符調用數據傳輸函數可以與客戶端進行數據的收發[3]。以此保證通信鏈路的可靠連接及數據傳輸的正確無誤。基于數據流套接字的通信模型如圖2所示。

2.2 基于UDP協議的網絡通信

數據報套接字,即無連接套接字,是不需要連接即可通信的套接字。采用UDP協議,可以向指定的socket發送數據包信息,也可以從指定的sokcet接收消息。提供雙向的面向記錄的數據流,但是不能確保數據傳輸的順序,也不能確保傳輸的可靠性,有時會出現傳輸失敗。

圖2 基于TCP協議的通信模型

基于UDP協議的通信模型相對比較簡單。服務器和客戶端沒有明確的界限,而且是對等的關系。客戶端之間首先創建一個數據報式套接字,并將其綁定到地址和端口上。客戶端與服務端的數據交換通過sendto和recvfrom函數完成,在調用這兩個函數時都指定對方的地址,而不用建立連接。最后,都需要調用closesocket關閉套接字。面向無連接的套接字編程模型下圖3所示。

圖3 基于UDP協議的通信模型

3 基于UDP通信的WinSock編程實現

由上節分析可知,UDP是一種面向非連接的,不可靠的通信協議,相對于TCP協議雖在通信可靠性上有所不及,但其傳輸效率高的特點使其在網絡通信上仍有廣泛應用。

服務器端使用ServerSocket監聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產生,在完成會話后,關閉連接。客戶端使用Socket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話,會話完成后,關閉Socket。客戶端不需要指定打開的端口,通常臨時的,動態的分配一個1024以上的端口[4]。

3.1 網絡通信結構

本文所涉及的網絡通信網絡由兩臺CPU所組成,分別是CPU1(服務器)及CPU2(客戶端),兩臺CPU通過利用基于UDP的網絡通信實現數據的交換。其服務器端CPU的IP地址為127.0.0.1,接收客戶端CPU發送的50字節的數據。

圖4 網絡通信結構

3.2 服務器端編程實現

服務器端的通信步驟為:

(1)加載套接字庫,創建套接字(WSAStartup()/socket());

(2)綁定套接字到一個IP地址和一個端口上(bind());

(3)等待和接收數據(sendto()/recvfrom());

(4)關閉套接字,關閉加載的套接字庫(closesocket()/ WSACleanup())。

現依照上述步驟,編寫服務器端代碼如下:

#include

#include

void main()

{ WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested=MAKEWORD(1, 1);

err=WSAStartup(wVersionRequested, &wsaData);

if (err != 0) {return; }

if (LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData. wVersion)!=1)

{WSACleanup( );

return; }

SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0); //創建套接字

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(7003);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //綁定套接字

char recvBuf[50]; //定義接收空間

SOCKADDR addrClient;

int len=sizeof(SOCKADDR);

recvfrom(sockSrv,recvBuf,50,0,(SOCKADDR*)&addrClien t,&len); //接收發送客戶端發送的數據

printf(“%s ”,recvBuf);

closesocket(sockSrv); //關閉套接字

WSACleanup();

}

3.3 客戶端編程實現

客戶端的通信步驟為:

(1)創建一個套接字socket();

(2)向服務器發送數據sendto();(3)關閉套接字;

具體代碼實現如下:

#include

#include

void main()

{ WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD(2, 2 );

err = WSAStartup( wVersionRequested, &wsaData ); //創建套接字

if (err!= 0) {return; }

i f ( L O B Y T E( w s a D a t a .w V e r s i o n )! = 2||HIBYTE(wsaData.wVersion)!= 2)

{WSACleanup( );

return; }

SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addrClient;

addrClient.sin_addr.S_un.S_addr=inet_ addr(“127.0.0.1”); //定義發送對象IP地址

addrClient.sin_family=AF_INET;

addrClient.sin_port=htons(8889);

SOCKADDR_IN addrSrv;

sendto(sockClient,”hi”,3,0,(SOCKADDR*)&addrClient,s izeof(SOCKADDR)); //發送數據

}

4 結束語

論文討論了基于UDP 的Socket編程,如何開發一個Server-Client模型的程序,服務器端編程的步驟,客戶端編程的步驟編程流程,對UDP異步傳輸進行了詳細的系統分析和設計,針對UDP異步傳輸本身的特點和對系統的功能要求,進行了編程實現。

[1]鄭阿奇.Visual C++6.0應用案例教程[M].北京:電子工業出版社,2010:160-170.

[2]延霞,謝斐.Visual C++網絡編程技術[M].北京:中國水利水電出版社,2010:6-11.

[3]任志考,李朝玲. Visual C++6.0環境下Winsock的研究與應用[J].信息技術.2006,(8):96-99.

[4]王理燕,賀利軍.基于VC的UDP的實現[J].信息通信.2008,No.1:20-23.

Internet UDP Communication With WinSock Control In VC++

Lei Jin1,Zhao Yan2
(1.The 719th Research Institute of CSIC Military Representative Office,Wuhan Hubei,420060;2.The 719th Research Institute of CSIC, Wuhan Hubei,420060)

With the rapid development of computer technology, network technology, communication technology, more and more network information into the public life of the transmission network design and implementation of information technology requirements are also increasing. This paper analyzes the principle of the use of sockets for network communication, research design and implementation of the VC UDP-based network programming.

network technology;UDP;sockets

猜你喜歡
網絡通信
基于NoC架構的網絡通信抗干擾方法研究
海上軍用網絡通信的安全控制技術
基于網絡通信的智能照明系統設計
電子制作(2019年15期)2019-08-27 01:11:48
基于CAN總線的網絡通信信道的建模與研究
測控技術(2018年7期)2018-12-09 08:57:54
移動計算機網絡通信技術研究
電子測試(2018年14期)2018-09-26 06:05:06
計算機網絡通信常見問題與技術發展研究
電子制作(2018年10期)2018-08-04 03:24:46
網絡通信中信息隱藏技術的應用
基于網絡通信的校園智能音箱設計
電子制作(2018年1期)2018-04-04 01:48:30
談計算機網絡通信常見問題及技術發展
電子制作(2017年17期)2017-12-18 06:41:06
汽車檢測控制系統網絡通信技術分析
電子測試(2017年23期)2017-04-04 05:07:12
主站蜘蛛池模板: 国产一区二区影院| 91精品视频在线播放| 久久美女精品| 毛片基地美国正在播放亚洲| 免费国产黄线在线观看| 本亚洲精品网站| 久久国产亚洲偷自| 白浆免费视频国产精品视频| 国产在线自乱拍播放| 天天综合网色中文字幕| 久久性视频| 亚洲人妖在线| 亚洲高清在线天堂精品| 97青草最新免费精品视频| 欧美日韩福利| 欧美日韩国产在线人成app| 亚洲精品自在线拍| 中文无码精品a∨在线观看| 久久久久久国产精品mv| 无码专区在线观看| 强奷白丝美女在线观看| 国产99在线| 亚洲视频免| 在线观看国产精品第一区免费| 婷婷亚洲视频| 在线视频亚洲色图| 狠狠做深爱婷婷综合一区| 欧美五月婷婷| 在线看片免费人成视久网下载| 四虎永久在线| 思思热在线视频精品| 丰满少妇αⅴ无码区| 在线观看91香蕉国产免费| 美女一级毛片无遮挡内谢| 亚亚洲乱码一二三四区| 国产网友愉拍精品| 精品撒尿视频一区二区三区| 久久先锋资源| 亚洲AV一二三区无码AV蜜桃| 青青草原国产一区二区| 精品少妇人妻一区二区| igao国产精品| 国产精品xxx| 91福利国产成人精品导航| 久久人妻系列无码一区| 亚洲无码不卡网| 精品一区二区三区波多野结衣| 精品三级在线| 国产成人精品视频一区视频二区| 国产区在线看| 国产精鲁鲁网在线视频| 国产成年女人特黄特色毛片免| 欧美激情视频在线观看一区| 99人妻碰碰碰久久久久禁片| 亚洲福利一区二区三区| 亚洲国产日韩欧美在线| 一级片免费网站| 欧美一级大片在线观看| 久久久四虎成人永久免费网站| 国产成人免费手机在线观看视频 | 国产在线无码一区二区三区| 日韩美毛片| 国产精品毛片一区| 99草精品视频| 免费无遮挡AV| 亚洲三级色| 精品成人一区二区| 久久人妻xunleige无码| 亚洲欧美人成人让影院| 最新亚洲人成无码网站欣赏网| 啪啪国产视频| 久久精品无码专区免费| 在线观看免费人成视频色快速| 九九热视频在线免费观看| 91麻豆精品国产高清在线| 国产无吗一区二区三区在线欢| 一级毛片在线直接观看| 日韩人妻精品一区| 一级毛片不卡片免费观看| 在线观看国产精品第一区免费| 天天做天天爱夜夜爽毛片毛片| 国产永久在线观看|