C語言中,通過UDP協議可以很方便地實現數據的傳輸。本文將以發送JSON字符串為例介紹如何使用C語言發送UDP數據包。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 8888 #define IPADDR "127.0.0.1" int main(int argc, char **argv) { // 創建socket int sockfd; sockfd = socket(PF_INET, SOCK_DGRAM, 0); if(sockfd< 0) { perror("socket"); exit(1); } // 設置服務器地址 struct sockaddr_in servaddr; bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); if(inet_pton(AF_INET, IPADDR, &servaddr.sin_addr)<= 0) { printf("inet_pton error for %s\n", IPADDR); exit(1); } // 構造JSON字符串 char *json_str = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"; // 發送JSON字符串 if(sendto(sockfd, json_str, strlen(json_str), 0, (struct sockaddr *)&servaddr, sizeof(servaddr))< 0) { perror("sendto"); exit(1); } // 關閉socket close(sockfd); return 0; }
以上代碼中,首先創建了一個UDP socket,然后設置了服務器地址。接著構造了一個輸入JSON字符串,并通過sendto函數將數據包發送到指定的服務器中。
需要注意的是,JSON字符串需要經過字符串編碼后再發送。否則,若JSON字符串中包含特殊字符,數據包可能無法正確傳輸。例如,如果JSON字符串中包含雙引號(")或反斜杠(\)等字符,則需要對其進行轉義,才能保證數據包的正確傳輸。
上一篇for循環json數組
下一篇vue crm