2277|6

7059

帖子

11

TA的资源

版主

楼主
 

【米尔瑞萨RZ/G2L开发板-试用体验】创建TCP服务器 [复制链接]

头书写一个tcp通信的实例

1、在虚拟机上新建tcp_server.c,代码如下:


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define SERVER_PORT 3861
#define LISENT_NUM 10

int main(int argc, char * argv[])
{
    int sfd, cfd;
    struct sockaddr_in clientaddr;
    struct sockaddr_in serverAddr;
    char buff[1024];
    int size = sizeof(struct sockaddr);
    pthread_t client_thread[LISENT_NUM];

    if((sfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
    {
        perror("socket");
        exit(-1);
    }

    memset(&serverAddr, 0, sizeof(struct sockaddr));
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_port = htons(SERVER_PORT);

    if (bind(sfd, (struct sockaddr*)&serverAddr, sizeof(struct sockaddr)) == -1)
	{
		perror("bind");
		close(sfd);
		exit(-1);
    }
    if(listen(sfd, LISENT_NUM) == -1)
    {
        perror("listen");
        close(sfd);
        exit(-1);
    }

    printf("#@ listen SERVER_PORT %d\\\\n", SERVER_PORT);
    printf("main: server waiting connect...\\\\n");

    if ((cfd = accept(sfd, (struct sockaddr *)&clientaddr, (socklen_t*)&size)) == -1)
	{
		perror("accept");
		close(sfd);
		return0;
	}
    printf("client (ip = %s : SERVER_PORT = %d) connect success\\\\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port));

    while (1)
    {
        usleep(1000*10);
        if (send(cfd, "hello MYD/YG2L", 6, MSG_NOSIGNAL) == -1)
        {
            perror("send");
            exit(-1);
        }
        printf("send: hello MYD/YG2L\\\\n");
        usleep(1000*10);
        if(recv(cfd, buff, sizeof(buff), 0) == -1)
        {
            perror("recv");
            exit(-1);
        }
        printf("receive: %s\\\\n", buff);
    }
    return0;

}

2、加载sdk:source /opt/yg2lx/environment-setup-aarch64-poky-linux

3、编译:

lugl@lugl-virtual-machine:~/MYDG2L$ $CC tcp_server.c -o tcp_server
In file included from /opt/yg2lx/sysroots/aarch64-poky-linux/usr/include/bits/libc-header-start.h:33,
                 from /opt/yg2lx/sysroots/aarch64-poky-linux/usr/include/stdio.h:27,
                 from tcp_server.c:1:
/opt/yg2lx/sysroots/aarch64-poky-linux/usr/include/features.h:397:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
 #  warning _FORTIFY_SOURCE requires compiling with optimization (-O)

4、上传到开发板,修改运行权限、运行:

root@myir-yg2lx:~# chmod 777 tcp_server
root@myir-yg2lx:~# ./tcp_server
#@ listen SERVER_PORT 3861
main: server waiting connect...
client (ip = 192.168.3.166 : SERVER_PORT = 53634) connect success
send: hello MYD/YG2L
receive: hello
send: hello MYD/YG2L
receive: hello
send: hello MYD/YG2L
receive: hello MYD
send: hello MYD/YG2L

5、打开网终调试助手,连接服务器后发送数据:

  如上图,调试正常。

【总结】在安装好交叉编译环境后,就可以愉快的进行linux下的编程了。

最新回复

我觉得是可以值得试试太棒了这边。支持物联网方面的功能很多。支持esp32 和rp2040 树莓派pi pico picow。   详情 回复 发表于 2023-6-2 11:19
点赞 关注
 

回复
举报

1704

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

交叉编译环境的安装麻烦不

还要装虚拟机

点评

如果你是linux\macos就不需要安装虚拟机。当然win下也可以。  详情 回复 发表于 2023-5-29 06:51
 
 

回复

7059

帖子

11

TA的资源

版主

板凳
 
火辣西米秀 发表于 2023-5-28 22:02 交叉编译环境的安装麻烦不 还要装虚拟机

如果你是linux\macos就不需要安装虚拟机。当然win下也可以。

 
 

回复

7244

帖子

2

TA的资源

版主

4
 

代码复制的好像有点问题

 

点评

我回去,重新上传一下,谢谢提醒。  详情 回复 发表于 2023-5-29 10:32
 
 

回复

7059

帖子

11

TA的资源

版主

5
 
wangerxian 发表于 2023-5-29 09:56 代码复制的好像有点问题  

我回去,重新上传一下,谢谢提醒。

 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

6
 

我觉得是可以值得试试太棒了这边。支持物联网方面的功能很多。支持esp32 和rp2040 树莓派pi pico picow。

点评

多谢大佬支持,我在努力学习中!  详情 回复 发表于 2023-6-2 11:46
 
 

回复

7059

帖子

11

TA的资源

版主

7
 
多点学习啊 发表于 2023-6-2 11:19 我觉得是可以值得试试太棒了这边。支持物联网方面的功能很多。支持esp32 和rp2040 树莓派pi pico picow。

多谢大佬支持,我在努力学习中!

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表