使用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 ...