找回密码
 立即注册
首页 业界区 科技 UDP-双向通信

UDP-双向通信

晦险忿 2025-6-8 11:55:38
使用UDP手实现两台主机主机直接的通信,使用两个线程,一个用于接受一个用于发送,两台主机的端口号必须相同
  1. /**************************************************************************
  2. *
  3. * 设计客户端和服务器之间的全双工通信 客户端程序
  4. * author:jindouliu2024@163.com
  5. * date:2025.5.14
  6. * notice:argv[1]:服务器的端口            argv[2]:服务器的IP
  7. *                   argv[3]:客户端(本地)的端口     argv[4]:客户端(本地)的IP
  8. *
  9. * Copyright (c)  2024-2025   jindouliu2024@163.com   All right Reserved
  10. * *************************************************************************/
复制代码
[code]#include#include#include#include#include#include #include#include#include#include pthread_t task1_id;pthread_t task2_id;int udp_socket;char *data[4];struct sockaddr_in server_addr;struct sockaddr_in client;//向服务器发送数据void * task1(void *arg){                char buf[128] = "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[128] = {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
您需要登录后才可以回帖 登录 | 立即注册