查看: 2154|回复: 0

GD32407Z-NB-IOT试用--UDP测试

[复制链接]
  • TA的每日心情

    2016-12-7 16:21
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2018-7-4 09:02:22 | 显示全部楼层 |阅读模式
    分享到:
    上一篇中提到,我使用手机的4G卡测试一直无法附着网络,通过咨询后得出的结论是无法用平常的4G卡测试,于是在某宝上弄了一张移动物联卡。
    刚收到物联卡我是直接放到板子上,没有动静。还以为买到了山寨卡。问题还是卡没有激活。将卡放入手机即可激活。
    激活卡后,急忙试试看能不能附着网络:

    一次成功,果然是需要专门的卡来测试。
    工具的左侧有UDP的标识,那么有网后直接试试UDP的通讯,这个时候就需要一个UDP的服务器。由于需要公网IP,用最直接的方法,买了个带linux操作系统的云服务器来测试UDP通讯。
    用linux系统也是应为网络通讯Linux方面的资源会比较多。直接在网上copy一份udp 服务的代码来测试。就用了如下的代码:
    /*********************************************************************** 版权所有 (C)2016, WangSq。** 文件名称:xx.c* 文件标识:无* 内容摘要:udpserver演示程序* 其它说明:无* 当前版本:V1.0* 作    者:WangSq* 完成日期:2016***********************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>/********************socket相关******************************************///socket参数#define SERVER_PORT 2234                 /*监听端口*/#define MAX_MSG_SIZE 256              /*recv缓冲器大小*/int sockfd;  //套接字描述符/*客户机的地址信息及长度信息*/struct sockaddr_in client;int  client_len=sizeof(struct sockaddr_in); //udp服务器监听函数初始化void udpser_init(){   /*服务器的地址信息*/   struct sockaddr_in server;  /*服务器填充sockaddr server结构*/    bzero(&server,sizeof(server));    server.sin_family=AF_INET;    server.sin_addr.s_addr=htonl(INADDR_ANY);    server.sin_port=htons(SERVER_PORT);      /*服务器建立socket描述符*/    if(-1 == (sockfd=socket(AF_INET, SOCK_DGRAM,0)))            {            perror("create socket failed");            exit (1);        }    /*捆绑socket描述符sockfd*/    if(-1 == ( bind( sockfd, ( struct sockaddr * )&server, sizeof(server) )) )        {            perror("bind error");            exit (1);            }}/*接收缓冲区--------------------len =4-----------------*/unsigned char message[MAX_MSG_SIZE];int recv_len=0;/* IP地址的存放缓冲区*/char addr_p[INET_ADDRSTRLEN];char *sndbuf = "Hello! i am OK.\n";/*********************************************************************** 功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期        版本号     修改人            修改内容* -------------------------------------------------------------------* 2016xxxx       V1.0       WangSq       创建***********************************************************************/int main(int argc, char *argv[]){            //udp服务器监听函数初始化    udpser_init();//    while(1)//    {        /********************************接收数据并打印*************************/        recv_len=recvfrom(sockfd,message,sizeof(message),0,(struct sockaddr *)&client,&client_len); //阻塞式        if(recv_len <0)        {           printf("recvfrom error\n");           exit(1);        }        /*打印客户端地址和端口号*/        inet_ntop(AF_INET,&client.sin_addr,addr_p,sizeof(addr_p));        printf("client IP is %s, port is %d\n",addr_p,ntohs(client.sin_port));        message[recv_len]='\0';        /*显示消息长度*/        printf("server received %d:%s\n", recv_len, message);        /********************************回发数据*************************/         if(sendto(sockfd,sndbuf,strlen(sndbuf),0,(struct sockaddr*)&client,client_len)<0)        {           printf("sendto error\n");           exit(1);        }//    }    return 0;}gcc 编译一下直接运行。  配置IP以及端口号连接:

    这个UDP服务一直在运行,有兴趣的也可以连一下。服务器只买了一个月的。有需要用的可以私信,与大家公用也可以。
    通过工具发送数据后,看UDP服务端是否收到呢?

    看打印信息是收到的,但是UDP的代码中有回复给客户端的消息,但是在IOT的调试工具中没有收到。这个问题我还继续弄一下。
    目前看看发送UDP的指令格式:

    具体的AT指令的资料在上一篇已经共享,有需要的可以看一下。
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-18 08:36 , Processed in 0.118922 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.