Linux網路程式設計 UDP程式設計例項

2021-10-24 09:09:51 字數 2743 閱讀 2863

使用udp協議通訊時伺服器端和客戶端無需建立連線,只要知道對方套接字的位址資訊,就可以傳送資料。伺服器端只需建立乙個套接字用於接收不同客戶端發來的請求,經過處理後再把結果傳送給對應的客戶端。

伺服器端和客戶端使用udp的流程如下圖示:

伺服器端**

/*****server.c*****/

#include

#include

#include

#include

#include

#include

#include

#include

#define buffer_size 128

intmain

(int argc,

char

*ar**)

if((sockfd =

socket

(af_inet, sock_dgram,0)

)==-1

)print

("sockfd = %d\n"

,sockfd)

;//設定sockaddr_in結構體中相關引數

bzero

(&servaddr,

szieof

(servaddr));

servaddr.sin_family = af_inet;

servaddr.sin_port =

htons

(atoi

(ar**[2]

)); servaddr.sin_addr.s_addr =

inet_addr

(ar**[1]

);if(

bind

(listenfd,

(struct sockaddr *

)&servaddr,

sizeof

(servaddr)

)<0)

printf

("bind success!\n");

peerlen =

sizeof

(cliaddr)

;while(1

)printf

("received a message: %s\n"

,buf)

;strcpy

(buf,

"welcome to server");

sendto

(sockfd, buf,

sizeof

(buf),0

,(struct sockaddr *

)&cliaddr, peerlen);}

close

(sockfd)

;exit(0);}

客戶端**

/*****client.c*****/

//標頭檔案同server.c

#define buffer_size 128

intmain

(int argc,

char

*ar**)

if((sockfd =

socket

(af_inet, sock_dgram,0)

)==-1

)//設定sockaddr_in結構體中相關引數

bzero

(&servaddr,

szieof

(servaddr));

servaddr.sin_family = af_inet;

servaddr.sin_port =

htons

(atoi

(ar**[2]

)); servaddr.sin_addr.s_addr =

inet_addr

(ar**[1]

);sendto

(sockfd, buf,

sizeof

(buf),0

,(struct sockaddr *

)&servaddr,

sizeof

(servaddr));

//傳送訊息給伺服器端if(

recvfrom

(sockfd, buf,

sizeof

(buf),0

,null

,null

)<0)

printf

("recv from server: %s\n"

,buf)

;close

(sockfd)

;exit(0);}

執行時先啟動伺服器端,再啟動客戶端

linux@linux-virtual-machine:

~/andy/net$ .

/server 192.168

.1.100

9999

listenfd =

3bind success!

listening...

received a message: hello server

linux@linux-virtual-machine:

~/andy/net$ .

/client 192.168

.1.100

9999

recv from server: welcome to server

linux網路程式設計 udp

udp udp收發 udp 協議不需要建立連線,類似於傳送簡訊,因此 udp 的程式設計方式比 tcp 更加簡單。udp 有其自己特有的接受與傳送資料的函式 socket af inet,sock dgram,0 建立socket bind socket fd,struct sockaddr ser...

Linux 網路程式設計(二)UDP程式設計

資料報通訊 對於資料報通訊的伺服器端來說,它不必再在乙個埠上偵聽,以等待建立連線,而只需生成乙個埠描述符,並且把這個埠描述符繫結到本地位址上就可以了。udp網路程式設計具體的操作流程為 使用系統呼叫socket 來獲得檔案描述符,該呼叫的宣告格式為 connect 系統呼叫由客戶端呼叫,它的用法如下...

Linux 網路程式設計之UDP

1.介紹 udp協議是無連線的,不可靠傳輸的協議.伺服器與客戶端的互動不需要建立連線,沒有流量控制的功能。與tcp一樣,它也是傳輸層協議,通訊過程中需要ip位址與埠號。使用udp進行程式設計包括伺服器與客戶端,下面介紹一下伺服器與客戶端的通訊流程 伺服器流程 1 建立伺服器套接字描socket 2 ...