1回答

0收藏

[评测分享] 【米尔-芯驰D9车规级开发板 测评】+ tcp server测试

#板卡评测 #板卡评测 2448 人阅读 | 1 人回复 | 2023-09-20

这篇来测试下在开发板上搭建tcp server测试。

一、测试程序


使用socket的方式来测试。
  1. <font size="3">#include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <arpa/inet.h>
  8. #include <netinet/in.h>

  9. #define SERVER_NET_PORT 8866

  10. int main(void)
  11. {
  12.     struct sockaddr_in server_addr = {0};
  13.     struct sockaddr_in client_addr = {0};
  14.     char ip_str[20] = {0};
  15.     int sockfd, connfd;
  16.     int addrlen = sizeof(client_addr);
  17.     char recvbuf[512];
  18.     int ret;

  19.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
  20.     if (0 > sockfd)
  21.     {
  22.         perror("socket error");
  23.         exit(EXIT_FAILURE);
  24.     }

  25.     server_addr.sin_family = AF_INET;
  26.     server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  27.     server_addr.sin_port = htons(SERVER_NET_PORT);
  28.     ret = bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
  29.     if (0 > ret)
  30.     {
  31.         perror("bind error");
  32.         close(sockfd);
  33.         exit(EXIT_FAILURE);
  34.     }

  35.     ret = listen(sockfd, 50);
  36.     if (0 > ret)
  37.     {
  38.         perror("listen error");
  39.         close(sockfd);
  40.         exit(EXIT_FAILURE);
  41.     }

  42.     connfd = accept(sockfd, (struct sockaddr *)&client_addr, &addrlen);
  43.     if (0 > connfd)
  44.     {
  45.         perror("accept error");
  46.         close(sockfd);
  47.         exit(EXIT_FAILURE);
  48.     }
  49.     printf("client connect...\n");
  50.     inet_ntop(AF_INET, &client_addr.sin_addr.s_addr, ip_str, sizeof(ip_str));
  51.     printf("client ip addr: %s\n", ip_str);
  52.     printf("client port: %d\n", client_addr.sin_port);

  53.     for ( ; ; )
  54.     {
  55.         memset(recvbuf, 0x0, sizeof(recvbuf));
  56.         ret = recv(connfd, recvbuf, sizeof(recvbuf), 0);
  57.         if(0 >= ret)
  58.         {
  59.             perror("recv error");
  60.             close(connfd);
  61.             break;
  62.         }
  63.         printf("from client: %s\n", recvbuf);
  64.         if (0 == strncmp("exit", recvbuf, 4))
  65.         {
  66.             printf("server exit...\n");
  67.             close(connfd);
  68.             break;
  69.         }
  70.     }

  71.     close(sockfd);
  72.     exit(EXIT_SUCCESS);
  73. }
  74. </font>
复制代码


二、编译程序


使用开发板的编译工具来编译测试程序
2.1、编译命令
root@ubuntu:/opt/work/test/net# aarch64-linux-gnu-gcc socket_server.c -o socket_server



2.2、看编译后的文件



2.3、复制文件到开发板
执行命令:
root@ubuntu:/opt/work/test/net# scp socket_server root@192.168.1.46:/opt/



三、运行程序


在开发板上执行命令:root@myd-jd9x:/opt# ./socket_server
TCP客户端与服务器之间数据传输

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

xiaoshen-372360

发表于 2023-9-28 09:22:38 | 只看该作者

必须支持一下,跟着大佬一起学习进步。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条