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