Linux UDP服务端和客户端程序的实现分享!

1. 源码

UDP服务端:

  /**   * @brief  UDP服务端   * @author Mculover666   * @date  2020/04/15  */  #include <stdio.h>  #include <unistd.h>  #include <sys/types.h>  #include <sys/socket.h>  #include <netinet/in.h>  #include <arpa/inet.h>  #include <stdlib.h>  #include <string.h>    int main(int argc, char* argv[])  {      int server_sock_fd;    struct sockaddr_in server_addr, client_addr;    char recv_buf[100];    int nbytes = 0;    socklen_t len = 0;      /* 创建Server Socket */    server_sock_fd = socket(AF_INET, SOCK_DGRAM, 0);    if (server_sock_fd < 0)    {      printf("服务端Socket创建失败");      return -1;    }    printf("服务端Socket创建成功n");      /* 绑定ip和端口 */    bzero(&server_addr, sizeof(server_addr));    server_addr.sin_family = AF_INET;    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);    server_addr.sin_port = htons(atoi(argv[1]));//指定端口号    bind(server_sock_fd, (struct sockaddr *) &server_addr, sizeof(server_addr));      printf("服务端Socket绑定成功n");        while(1)    {      /* 接收UDP客户端的数据 */      printf("等待接收客户端数据:n");      len = sizeof(client_addr);      nbytes = recvfrom(server_sock_fd, recv_buf, 100, 0, (struct sockaddr *)&client_addr, &len);      printf("okn");      recv_buf[nbytes] = '';      printf("recv %d bytes:%s.n", nbytes, recv_buf);        //接收用户输入,发送给客户端      printf("请输入要发送给客户端的数据:");      fgets(recv_buf, 100, stdin);      sendto(server_sock_fd,recv_buf,strlen(recv_buf),0,(struct sockaddr *)&client_addr,len);    }      return 0;  }

UDP客户端:

  /**   * @brief  UDP客户端程序   * @author Mculover666   * @date  2020/04/15  */  #include <stdio.h>  #include <unistd.h>  #include <sys/types.h>  #include <sys/socket.h>  #include <netinet/in.h>  #include <arpa/inet.h>  #include <stdlib.h>  #include <string.h>    int main(int argc, char* argv[])  {    int sock_fd;    struct sockaddr_in server_addr;    char recv_buf[100];    int nbytes = 0;    socklen_t len = 0;      /* 创建Socket */    sock_fd = socket(AF_INET, SOCK_DGRAM, 0);    if (sock_fd < 0)    {      printf("客户端Socket创建失败");      return -1;    }      /* 绑定ip和端口 */    bzero(&server_addr, sizeof(server_addr));    server_addr.sin_family = AF_INET;    server_addr.sin_addr.s_addr = inet_addr(argv[1]);    server_addr.sin_port = htons(atoi(argv[2]));//指定端口号    while(1)    {  	  len = sizeof(server_addr);      //接收用户输入,发送给服务端      printf("请输入要发送给服务端的数据:");  	  fgets(recv_buf, 100, stdin);      sendto(sock_fd,recv_buf,100,0,(struct sockaddr *)(&server_addr),len);            /* 接收UDP客户端的数据 */      len = sizeof(server_addr);      nbytes = recvfrom(sock_fd, recv_buf, 100, 0, (struct sockaddr *)&server_addr, &len);      recv_buf[nbytes] = '';      printf("recv %d bytes:%s.n", nbytes, recv_buf);        }      return 0;  }

2. 在本机运行结果

编译:

  gcc server.c -o srever_wangshiwei.o  gcc client.c -o client_wangshiwei.o

运行:

Linux UDP服务端和客户端程序的实现

Linux UDP服务端和客户端程序的实现

3. 在开发板与PC之间运行结果

编译:

  gcc server.c -o srever_wangshiwei.o  arm-linux-gnueabi-gcc client.c -o clientARM_wangshiwei.o

Linux UDP服务端和客户端程序的实现

Linux UDP服务端和客户端程序的实现

到此这篇关于Linux UDP服务端和客户端程序的实现的文章就介绍到这了,更多相关Linux UDP服务端和客户端内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

—-想了解Linux UDP服务端和客户端程序的实现分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/484836.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐