(一)UDP基本程式設計步驟

2021-07-25 19:28:56 字數 2004 閱讀 2928

udp服務端程式設計分5步:

1.建立 udp socket套接字,用socket函式。

2.設定socket的屬性,用setsockopt()函式,(可選)

3.往socket繫結包含 ip資訊,位址資訊的 struct sockaddr_in(ipv4)結構體。用bind()函式

4.迴圈接收訊息,用recvfrom()函式

5.關閉socket套接字

udp客戶端程式設計分:

1.建立 udp socket套接字,用socket函式。

2.用sendto()函式往指定的ip,位址傳送資訊。

udp的傳送函式sendto()和接收函式 recvfrom():

1.sendto():

int ret = recvfrom(int sockfd,void *buf,size_t len,0, struct sockaddr *to , int fromlen);  

第乙個引數為服務端的udp監聽套接字

第二個引數為傳送資料的緩衝區

第三個引數為快取區的大小

第四個引數一般為0;

第六個引數為:第五個引數的大小。

返回值:成功返回實際傳送出去的資訊的位元組數,失敗返回-1

2.recvfrom():

int ret = recvfrom(int sockfd,void *buf,size_t len,0, struct sockaddr *from,socket_t *fromlen);  

第乙個引數為服務端的udp監聽套接字

第二個引數為接收資料的緩衝區

第三個引數為快取區的大小

第四個引數一般為0;

返回值:成功返回接收到的資訊的位元組數,失敗返回-1

標頭檔案:

#ifndef _myhead_h_

#define _myhead_h_

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif

服務端:

#include"myhead.h"

char rbuf[50];

int main()

//設定埠復用

setsockopt(sockfd,sol_socket,so_reuseaddr,&on,sizeof(on));

//繫結位址資訊,ip資訊

ret = bind(sockfd,(struct sockaddr*)&saddr,sizeof(struct sockaddr));

if(ret<0)

int val = sizeof(struct sockaddr);

//迴圈接收客戶端發來的訊息

while(1)

printf("the data :%s\n",rbuf);

bzero(rbuf,50);

} //關閉udp套接字,這裡不可達的。

close(sockfd);

return 0;

}

客戶端:

#include"myhead.h"

char wbuf[50];

int main()

//設定埠復用

setsockopt(sockfd,sol_socket,so_reuseaddr,&on,sizeof(on));

//迴圈傳送資訊給服務端

while(1)

bzero(wbuf,50);

} close(sockfd);

return 0;

}

8 UDP程式設計 基本步驟

傳輸的大小有限制,一般小於60k 1 使用datagramsocket 指定埠建立接收端 2 準備容器,封裝成datagrampacket包裹 3 阻塞式接收包裹receive datagrampacket p 4 分析資料 byte getdata getlength 5 釋放資源 public ...

UDP程式設計步驟

udp提供的是無連線 不可靠的資料報服務。在傳輸過程中資料可能會丟失。我們只有通過在應用層進行正確的控制才能修復在傳輸層上存在的缺陷。因此,需要我們編寫可靠的udp應用程式。udp客戶端與伺服器互動的步驟如圖 使用udp協議進行通訊時,客戶端並不需要與伺服器建立連線,只需要通過sendto系統呼叫給...

UDP基本使用步驟

udp使用的特點是傳送方和接收方是完全平等的。對於傳送方,先鏈結自己的埠 建立資料報套接字並將其繫結到 本地主機上的指定埠。datagramsocket client newdatagramsocket 8888 將要傳送的資料換成位元組陣列形式 string data 仙桃中學 byte data...