UDP客户端服务端通信

服务端 udp_server.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>

int main(){

    //创建用于通信的socket
    int fd = socket(PF_INET,SOCK_DGRAM,0);
    if(fd == -1){
        perror("socket");
        exit(-1);
    }

    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(9999);
    addr.sin_addr.s_addr = INADDR_ANY;
    //绑定
    int ret = bind(fd,(struct sockaddr*)&addr,sizeof(addr));
    if(ret == -1){
        perror("bind");
        exit(-1);
    }

    //通信
    while(1){
        //接受数据
        char recvbuf[1024] = {0};
        char cIp[128];
        struct sockaddr_in caddr;
        int len = sizeof(caddr);
        recvfrom(fd,recvbuf,sizeof(recvbuf),0,(struct sockaddr *)&caddr,&len);

        printf("cliet IP : %s, Port : %d\n",
            inet_ntop(AF_INET,&caddr.sin_addr.s_addr,cIp,sizeof(cIp)),
            ntohs(caddr.sin_port));
        
        printf("client say : %s\n",recvbuf);

        //发送数据
        sendto(fd,recvbuf,sizeof(recvbuf),0,(struct sockaddr *)&caddr,sizeof(caddr));
    }
    close(fd);
    return 0;
}

客户端 udp_client.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>

int main(){

    //创建用于通信的socket
    int fd = socket(PF_INET,SOCK_DGRAM,0);
    if(fd == -1){
        perror("socket");
        exit(-1);
    }

    struct sockaddr_in saddr;
    saddr.sin_family = AF_INET;
    saddr.sin_port = htons(9999);
    inet_pton(AF_INET,"192.168.245.128",&saddr.sin_addr.s_addr);

    int i = 0;
    //通信
    while(1){
        //发送数据
        char sendBuf[128];
        sprintf(sendBuf,"hello i am client, i = %d\n",i++);
        sendto(fd,sendBuf,sizeof(sendBuf),0,(struct sockaddr *)&saddr,sizeof(saddr));

        //接受数据
        recvfrom(fd,sendBuf,sizeof(sendBuf),0,NULL,NULL);

        printf("server say : %s\n",sendBuf);
        sleep(1);
    }
    close(fd);
    return 0;
}

运行结果

posted @   daydayupzgz  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示