基於Udp的Socket網路程式設計

2021-06-07 06:13:48 字數 1558 閱讀 1500

1.新建乙個工作空間 udp 新增兩個工程udpclient 和 udpsrv

2.在工程udpsrv中新增udpsrv.cpp檔案

**如下:

#include #include void main()

if (lobyte (wsadata.wversion) != 1 || hibyte(wsadata.wversion) != 1 )

//基於udp建立資料報套接字

//sock_stream是基於tcp的,資料傳輸比較有保障,是資料流,一般是tcp/ip協議的程式設計

//sock_dgram是基於udp的,專門用於區域網,基於廣播,是資料報,是udp協議網路程式設計

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();

}

新增link庫檔案 ws2_32.lib

3.在工程udpclient中新增udpclient.cpp檔案

**如下:

#include #include 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("127.0.0.1");

addrsrv.sin_family = af_inet;

addrsrv.sin_port = htons(6000);

sendto(sockclient,"hello",strlen("hello")+1,0,

(sockaddr*)&addrsrv,sizeof(sockaddr));

closesocket(sockclient);

wsacleanup();

}

同樣新增link庫檔案 ws2_32.lib

4.先執行服務端程式在執行客戶端程式會看到效果 

基於UDP的socket網路程式設計

udp的網路程式設計模型較tcp簡單一些,因為udp的特點與tcp的不一樣,tcp是面向連線的,udp是無連線的。udp的服務端程式設計可總結為以下幾個步驟 1.使用socket建立通訊描述符 int socket int domain,int type,int protocol type引數應選擇...

基於TCP與UDP的windows網路程式設計

下面是 winsockapi 提供的幾個轉換函式 u long htonl u long hostlong 將32位的主機位元組序轉換為32位的網路位元組序,htonl host to net long u short htons u short hostshort 將16位的主機位元組序轉換為16...

基於UDP協議的Socket網路程式設計

一 基於udp協議的socket網路程式設計流程 採用 udp 套接字方式實現c s的通訊程式由客戶端和伺服器端兩部分組成。伺服器端程序依次按以下步驟進行 1 呼叫socket 建立乙個資料報套接字 2 呼叫 bind 把伺服器位址繫結在該套接字上 3 呼叫recvform 等待客戶程序發來的請求,...