Linux UDP協議程式設計流程

2021-10-08 12:56:01 字數 2489 閱讀 3500

udp:無連線的、不可靠的、資料報服務

udp在進行伺服器與客戶端的建立時是不需要建立連線的。

1、伺服器程式設計流程(被動)

(1)int socket();建立乙個用於監聽客戶端連線的網路套接字

(2)int bind();作為伺服器,必須將位址資訊和sockfd進行繫結

(3)int recvform();接收任意乙個客戶端的資料

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

(4)int sendto();給乙個客戶端傳送資料

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

(5)int close();關閉2、客戶端程式設計流程(主動)(1)int socket();(2)int sendto();客戶端和伺服器通訊必須先呼叫sendto,把客戶端的位址資訊可以傳送給伺服器

(3)int recvform();

(4)int close();

注意:recvform和sendto需要設定成迴圈保證可以迴圈接收資料

3、資料報服務的特點

(1)一次sendto對應一次recvfrom.

(2)一次sendto表示傳送了一段資料,接收方一次recvfrom如果沒有將一 次sendto傳送的資料接收完, 則剩餘的資料就會被丟棄。

(3)一次sendto對應乙個udp資料報

**實現:

服務端:

#include #include #include #include #include #include #include #include #include int main()

; struct sockaddr_in cli_addr;

socklen_t len = sizeof(cli_addr);

int n = recvfrom(sockfd, buff, 127, 0, (struct sockaddr*)&cli_addr, &len);

if (n <= 0)

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

int res = sendto(sockfd, "ok", 2, 0, (struct sockaddr*)&cli_addr, len);

if (res <= 0)

}close(sockfd);

exit(0);

}

客戶端:

#include #include #include #include #include #include #include #include #include int main()

; fgets(buff, 127, stdin);

if (strncmp(buff, "end", 3) == 0);

int res = sendto(sockfd, buff, strlen(buff)-1, 0, (struct sockaddr*)&ser_addr, sizeof(ser_addr));

assert(res != -1);

memset(buff, 0, 128);

int n = recvfrom(sockaddr, buff, 127, 0, null, null);

if (n > 0)

assert(n != -1);

printf("recvfrom data: %s\n",buff);

}close(sockfd);

exit(0);

}

linux udp網路程式設計 c s

1 server deepfuture deepfuture laptop private mytest testupds server wait.server read deepfuture.iteye.com server send hello server wait.cdeepfuture d...

Linux TCP協議程式設計流程

tcp協議 面向連線的,可靠的 位元組流服務 udp協議 無連線的,不可靠的,資料報服務 伺服器 一般為被動通訊 客戶端 一般為主動通訊 1 伺服器端程式設計流程 1 int socket 建立乙個用於監聽客戶端鏈結的網路套接字 int socket int domain,int type,int ...

Linux TCP協議的程式設計流程

一 定義 tcp協議是面向連線的可靠的位元組流服務 tcp協議分為客戶端和服務端 伺服器是被動通訊,客戶端是主動通訊 二 伺服器的系統呼叫 1 方法 1 int socket 建立乙個用於監聽客戶端連線的網路套接字 原型 成功返回套接字的檔案描述符,失敗返回 1 domain 協議簇 af inet...