Linux下的UDP通訊

2021-06-23 10:08:09 字數 1675 閱讀 2054

[日期:2012-06-02]

[字型:大中小]

今天我們介紹如何編寫linux下的udp程式,關於tcp程式可以參考這裡:

由於udp通訊不需要事先建立連線,因此不需要tcp中的connect函式。

伺服器端的步驟如下:

1. socket:      建立乙個socket

2. bind:          將這個socket繫結在某個埠上(af_inet)

3. recvfrom:  如果沒有客戶端發起請求,則會阻塞在這個函式裡

4. close:        通訊完成後關閉socket

客戶端的步驟如下:

1. socket:      建立乙個socket

2. sendto:     相伺服器的某個埠發起請求(af_inet)

3. close:        通訊完成後關閉socket

可以看到,和tcp相比,步驟少了一些。

這裡我們用到了兩個新的函式:

int recvfrom(int sockfd, void * buf, size_t len, int flags, struct sockaddr * src_addr, socklen_t * addrlen);

int sendto(int sockfd, const void * buf, size_t len, int flags, const struct sockaddr * dest_addr, socklen_t addrlen);

recvfrom用於接收資料,sendto用於傳送資料

recvfrom:

socket:socket套接字

buf:接收到的資料的存放位置

flags:一般情況下為0

src_addr:接收的源位址

addrlen:位址長度

sendto:

socket:socket套接字

buf:要傳送的資料的起始位址

flags:一般情況下為0

dest_addr:傳送到的目的位址

addrlen:位址長度

還是先上**:

makefile:

all: server.c client.c  

gcc -wall client.c -o client  

gcc -wall server.c -o server  

clean:  

rm -rf *.o client server  

linux下udp的通訊例子

服務端 include include include include include include define maxline 80 define serv port 502 void do echo int sockfd,struct sockaddr pcliaddr,socklen t ...

linux下C 實現UDP通訊

簡要介紹udp原理,通過 例項講解。本篇部落格不強調server跟client 的概念,重在實現雙方互通。收的一方 socket bind recvfrom close 發的一方 socket sendto close 只有收資料的一方需要bind 而傳送的一方不需要bind 由上圖可以看出,bin...

2 1 Linux下實現簡單UDP通訊

1.建立socket 1 使用socket函式,socket 組,傳輸型別,協議 2 組包括 目前使用af inet af inet ipv4 af inet6 ipv6 3 傳輸型別 目前實現udp使用sock dgram sock stream 雙向可靠位元組流 sock dgram 支援無連線...