晦险忿 发表于 2025-6-8 11:55:38

UDP-双向通信

使用UDP手实现两台主机主机直接的通信,使用两个线程,一个用于接受一个用于发送,两台主机的端口号必须相同
/**************************************************************************
*
* 设计客户端和服务器之间的全双工通信 客户端程序
* author:jindouliu2024@163.com
* date:2025.5.14
* notice:argv:服务器的端口            argv:服务器的IP
*                   argv:客户端(本地)的端口   argv:客户端(本地)的IP
*
* Copyright (c)2024-2025   jindouliu2024@163.com   All right Reserved
* *************************************************************************/#include#include#include#include#include#include #include#include#include#include pthread_t task1_id;pthread_t task2_id;int udp_socket;char *data;struct sockaddr_in server_addr;struct sockaddr_in client;//向服务器发送数据void * task1(void *arg){                char buf = "this is task1,client sending";        while(1){                //发送数据                sendto(udp_socket,buf,strlen(buf),0,(struct sockaddr *)&server_addr,sizeof(server_addr));                sleep(10);        }        pthread_exit(NULL);}//接收服务器的数据void *task2(void *arg){    char buf = {0};    struct sockaddr_in server;    socklen_t server_size = sizeof(server);    while (1) {      // 准备接收数据      int bytes_received = recvfrom(udp_socket, buf, sizeof(buf), 0, (struct sockaddr *)&server, &server_size);      if (bytes_received > 0) {            printf("data is %s\n", buf);      } else {            fprintf(stderr, "recvfrom error errno:%d,%s", errno, strerror(errno));      }      bzero(buf, sizeof(buf));    }    pthread_exit(NULL);}int main(int argc,char *argv[]){        for(int i=0;i
页: [1]
查看完整版本: UDP-双向通信