UDP伺服器的實現

2021-08-27 08:57:06 字數 1423 閱讀 6561

udp是一種面向無連線的不可靠傳輸協議,有處理速度快、消耗資源小的特點。

好奇udp通訊怎麼實現併發服務。tcp可以通過監聽服務,建立新的會話,實現併發;

udp沒有這種監聽機制,如何實現併發?

其實,udp本身就可連線多個客戶端。udp是不區分客戶端,也不需要等待客戶端的連線請求。

這樣就不用併發處理了。

//udp伺服器的實現

#include //printf

#include //inet_addr htons

#include #include //socket

#include //sockaddr_in

#include //exit

#include //close

#include //strcat

#include #define errlog(errmsg) dowhile(0)

#define n 128

int main(int argc, const char *argv)

; //bzero memset

bzero(&client_addr, sizeof(client_addr));

bzero(&server_addr, sizeof(client_addr));

if(argc < 3)

//建立套接字 ---> socket( )

if((sockfd = socket(af_inet, sock_dgram, 0)) < 0)

//填充伺服器網路資訊結構體 sockaddr_in

//inet_addr : 將點分十進位制ip位址轉化為網路能夠識別的整型資料

//htons : 將主機位元組序轉化為網路位元組序

//atoi :將字串轉化為整型資料

server_addr.sin_family = af_inet;

server_addr.sin_addr.s_addr = inet_addr(argv[1]);

server_addr.sin_port = htons(atoi(argv[2]));

//將套接字與網路資訊結構體繫結 ---> bind( )

if(bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)

while(1)

printf("%s ---> %d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

if(strncmp(buf, "break", 5) == 0)

else

}} close(sockfd);

return 0;

}

網路 UDP伺服器的實現

1 利用socket函式建立套接字 2 伺服器用bind進行ip和埠號的繫結 3 不需要設定監聽狀態 4 繫結後直接讀寫 用來資料的接收 include include int recvfrom int sockfd,void buf,ssize t len,int flags,struct soc...

UDP伺服器的簡單實現

伺服器端 include include include include include include define err exit m do while 0 int main int argc,char argv int sock socket af inet,sock dgram,0 if ...

mysql udp伺服器 UDP伺服器

傳輸層主要應用的協議模型有兩種,一種是tcp協議,另外一種則是udp協議。tcp協議在網路通訊中佔主導地位,絕大多數的網路通訊借助tcp協議完成資料傳輸。但udp也是網路通訊中不可或缺的重要通訊手段。相較於tcp而言,udp通訊的形式更像是發簡訊。不需要在資料傳輸之前建立 維護連線。只專心獲取資料就...