欢迎来到军工软件开发人才培养基地——学到牛牛

linux数据发送与接收

时间:2024-05-06 07:01:10 来源:学到牛牛

在Linux中,数据的发送和接收通常使用套接字(socket)来实现。以下是一个简单的示例代码,演示了如何创建一个UDP套接字并发送和接收数据:

 

1679014928836.jpg

 

发送数据:

 

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#define PORT 8888int main(){    int sockfd;    struct sockaddr_in servaddr;

 

    char sendline[] = "Hello, Server!";    char recvline[1024];    // 创建套接字

    sockfd = socket(AF_INET, SOCK_DGRAM, 0);    // 设置服务器地址结构体

    memset(&servaddr, 0, sizeof(servaddr));

    servaddr.sin_family = AF_INET;

    servaddr.sin_port = htons(PORT);

    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");    // 发送数据

    sendto(sockfd, (const char *)sendline, strlen(sendline),

           MSG_CONFIRM, (const struct sockaddr *)&servaddr,           sizeof(servaddr));

 

    close(sockfd);    return 0;

}

接收数据:

 

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#define PORT 8888int main(){    int sockfd;    struct sockaddr_in servaddr, cliaddr;

 

    char buffer[1024];    // 创建套接字

    sockfd = socket(AF_INET, SOCK_DGRAM, 0);    // 设置服务器地址结构体

    memset(&servaddr, 0, sizeof(servaddr));

    servaddr.sin_family = AF_INET;

    servaddr.sin_port = htons(PORT);

    servaddr.sin_addr.s_addr = INADDR_ANY;    // 绑定套接字到端口

    bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr));    socklen_t len;    int n;    // 接收数据

    n = recvfrom(sockfd, (char *)buffer, 1024,

                 MSG_WAITALL, (struct sockaddr *)&cliaddr,

                 &len);

 

    buffer[n] = '';    printf("Client : %s ", buffer);

 

    close(sockfd);    return 0;

}

以上代码演示了一个基本的UDP套接字通信示例,在实际应用中需要根据具体需求进行修改和优化。