一、緒言
udp是一種面向非連線,不可靠的通訊協議,相對於tcp
server端: open a socket(socket)--->
;name
the socket(bind)--->send and receive
data
(sendto
recvfrom)--->close socket(closesocket)
client端: open a socket(socket)---------------------------->send and receive data(sendto recvfrom)--->close socket(closesocket)
server端無需listen,client端無需connect,因此udp中server和client的區別相對較模糊。只要呼叫sendto和recvfrom就可以給指定的位址收發資料,但並不保證收發的資料的完整性和可靠性。
三、示例
udpserver主要**:
#include #include #pragma comment(lib,"ws2_32.lib")
void main()
if (lobyte(wsadata.wversion)!=1 ||
hibyte(wsadata.wversion)!=1)
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(6000);
bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));
sockaddr_in addrclient;
int len=sizeof(sockaddr);
char recvbuf[100];
recvfrom(socksrv,recvbuf,100,0,(sockaddr*)&addrclient,&len);
printf("%s\n",recvbuf);
closesocket(socksrv);
wsacleanup();
}
client端**:
#include #include #pragma comment(lib,"ws2_32.lib")
void main()
if (lobyte(wsadata.wversion)!=1 ||
hibyte(wsadata.wversion)!=1)
socket sockclient=socket(af_inet,sock_dgram,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=inet_addr("192.168.58.169");
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
sendto(sockclient,"hello",strlen("hello")+1,0,
(sockaddr*)&addrsrv,sizeof(sockaddr));
closesocket(sockclient);
wsacleanup();
}
四、結束語
udp通訊比tcp簡單了很多,在資料可靠性不是很高的情況下,有使用的價值
Visual C 設計UDP協議通訊示例
一 緒言 udp是一種面向非連線,不可靠的通訊協議,相對於 tcp二 udp的通訊過程 server端 open a socket socket name the socket bind send and receive data sendto recvfrom close socket close...
全面掌握VisualC 實現UDP協議 一
一.走進udp協議 udp user datagram protocol 協議就是 使用者資料報協議 它是一種無連線的協議,無連線主要是和tcp協議相比較的。我們知道當利用tcp協議傳送資料的時候,首先必須先建立連線 也就是所謂的握手 才可以傳輸資料。而當計算機利用udp協議進行資料傳輸的時候,傳送...
TCP協議 UDP協議
tcp是面向連線的傳輸層的協議,它在程序互動時,會建立乙個鏈結,然後在傳輸資料之後會取消連線,tcp的鏈結是虛連線。每一條tcp連線只能有兩個端點,只能是點對點的資料鏈結,不能進行廣播。tcp提供可靠的按時交付的 無差錯的 不重複的 按序到達的服務 可靠有序 不丟不重 tcp提供全雙工通訊 傳送快取...