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

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

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

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

服務器端使用ServerSocket監聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產生,在完成會話后,關閉連接??蛻舳耸褂肧ocket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話,會話完成后,關閉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
主站蜘蛛池模板: 欧美亚洲香蕉| 九九热视频精品在线| 最新无码专区超级碰碰碰| 999精品视频在线| 中文字幕乱妇无码AV在线| 国产精品区网红主播在线观看| 国产熟女一级毛片| 伊人无码视屏| 日韩精品亚洲精品第一页| 日韩免费视频播播| 天天综合亚洲| 欧美有码在线| 国产美女视频黄a视频全免费网站| 国产精品福利尤物youwu| 久久国产精品影院| 中文字幕在线不卡视频| 人妻21p大胆| 手机成人午夜在线视频| 亚洲午夜天堂| 全免费a级毛片免费看不卡| 久久久久久久蜜桃| 国产主播在线观看| 永久免费无码成人网站| 亚洲欧美精品一中文字幕| 国产成人精品一区二区不卡| 国产激情无码一区二区APP| 亚洲人成网站在线播放2019| 3p叠罗汉国产精品久久| 香蕉久久国产超碰青草| 成年女人a毛片免费视频| 亚洲精品欧美日本中文字幕| 国产精品视频公开费视频| 婷婷亚洲最大| 亚洲色图欧美| 日韩精品专区免费无码aⅴ| 亚洲国产av无码综合原创国产| 亚洲日韩第九十九页| 免费在线观看av| 亚洲色图狠狠干| 狠狠亚洲婷婷综合色香| 国产精品无码翘臀在线看纯欲| 国产乱人伦偷精品视频AAA| 国产原创演绎剧情有字幕的| 日本在线欧美在线| 91成人在线免费视频| 伊伊人成亚洲综合人网7777| 日韩av手机在线| 中日韩一区二区三区中文免费视频 | 伊人国产无码高清视频| 播五月综合| 国产成人综合亚洲欧美在| 91欧美在线| 国产微拍精品| 青青青视频91在线 | 香蕉精品在线| 亚洲熟妇AV日韩熟妇在线| 国产亚洲美日韩AV中文字幕无码成人| 全色黄大色大片免费久久老太| 久久久黄色片| 国内熟女少妇一线天| 91外围女在线观看| 岛国精品一区免费视频在线观看| 欧美.成人.综合在线| 伊人久久久久久久| 国产精品视频久| 啪啪免费视频一区二区| 欧美福利在线| 91系列在线观看| www.99精品视频在线播放| 精品少妇人妻一区二区| 国产黄色爱视频| 国产精品v欧美| 国产精品香蕉在线| 蜜桃视频一区二区| 久久永久精品免费视频| 亚洲女同一区二区| 亚洲国产精品久久久久秋霞影院| 成人在线观看一区| 色噜噜中文网| 免费看黄片一区二区三区| 国产农村1级毛片| 欧美激情首页|