[日期: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 支援無連線...