本文由自己从网络上查资料整理而成 已经测试可用

只需修改下就能用到项目中

给需要的童鞋们参考

平台(LM3S9B92+UCOSII+LWIP)

在线IP地址转换器(二进制 十进制 十六进制转换)

http://www.ab126.com/goju/1840.html

LWIP netconn API函数下 实现的

TCP服务器 

TCP客户端

  UDP测试

UDP流程

conn = netconn_new(NETCONN_UDP);       //创建UDP连接
        netconn_bind(conn,IP_ADDR_ANY, 80);   //绑定端口号
netconn_connect(conn,&destip,destport);
netconn_send(conn,UDPNetbuf);  //收或发
netconn_delete(conn);

主程序(三个线程只打开了一个UDP的TCP测试的被注释了每次打开一个即可测试)

#include <includes.h>
#include    "lwip/sys.h"
#include "user/my_tcp_client.h"
#include "utils/uartstdio.h"/*  Application tasks           */
#define          TASK_INPUT_PRIO       11
#define          TASK_LWIP_PRIO        3#define taskinputstck    1024
#define tasklwipstck     1024static  OS_STK       App_TaskStartStk[APP_CFG_TASK_START_STK_SIZE];
OS_STK taskinput_stack[taskinputstck];
OS_STK tasklwip_stack[tasklwipstck];
extern struct netif lwip_netif;
extern void stellarisif_input(void *arg);
extern void httpd_thread(void *arg);
extern void my_lwip_init(void);
extern void tftp_thread(void *arg);static  void  App_TaskStart   (void *p_arg);int main (void)
{BSP_PreInit ();BSP_IntDisAll();OSInit();                                                   /* Initialize "uC/OS-II, The Real-Time Kernel"          */OSTaskCreateExt((void (*)(void *)) App_TaskStart,           /* Create the start task                                */(void           *) 0,(OS_STK         *)&App_TaskStartStk[APP_CFG_TASK_START_STK_SIZE - 1],(INT8U           ) APP_CFG_TASK_START_PRIO,(INT16U          ) APP_CFG_TASK_START_PRIO,(OS_STK         *)&App_TaskStartStk[0],(INT32U          ) APP_CFG_TASK_START_STK_SIZE,(void           *) 0,(INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));OSStart();
}static  void  App_TaskStart (void *p_arg)
{(void)p_arg;BSP_PostInit();                                             /* Initialize BSP functions                             */Tmr_TickInit ();                                         /* Initialize the SysTick                               */my_lwip_init();OSTaskCreate(stellarisif_input,(void *)&lwip_netif,&taskinput_stack[taskinputstck - 1],TASK_INPUT_PRIO);//OSTaskCreate(httpd_thread,/*OSTaskCreate(tftp_thread,(void *)0,&tasklwip_stack[tasklwipstck - 1],TASK_LWIP_PRIO);*//*    OSTaskCreate(my_tcp_client_thread,(void *)0,&tasklwip_stack[tasklwipstck - 1],TASK_LWIP_PRIO);*///  sys_thread_new("tcpserv",my_tcp_server_thread, (void *)0, 1024, 2);  //测试TCP服务器
//  sys_thread_new("tcpclt",my_tcp_client_thread, (void *)0, 1024, 2);   //测试TCP客户端sys_thread_new("udp",my_udp_thread, (void *)0, 1024, 2);              //测试UDP#if (OS_TASK_STAT_EN > 0)OSStatInit();                                               /* Determine CPU capacity                               */
#endif                           for(;;){OSTaskSuspend(OS_PRIO_SELF);                            /*  The start task can be pended here.                  */  }
}

测试程序

头文件

#ifndef  __MY_TCP_CLIENT_H__
#define  __MY_TCP_CLIENT_H__void my_tcp_server_thread(void *arg);
void my_tcp_client_thread(void *arg);
void my_udp_thread(void *arg);
#endif

.C文件

 #include "includes.h"               /* uC/OS interface */
#include "lwip/api.h"#include <stdio.h>
#include <string.h>#include "user/my_tcp_client.h"
#include "utils/uartstdio.h"
//*********************************************************
//
//            tcp 服务器端测试程序
//
//*********************************************************
void my_tcp_server_thread(void *arg)
{struct netconn *conn, *newconn = NULL;struct netbuf        *TCPNetbuf;char getText[]="hello i am server!";conn = netconn_new(NETCONN_TCP);      /* 创建TCP连接  */netconn_bind(conn,NULL,80);           /* 绑定本地地址和监听的端口号 */  netconn_listen(conn);                 /* 进入监听状态 */UARTprintf("\033[2JTCP listening\n");while(1){newconn = netconn_accept(conn);    /*阻塞当前进程到有数据接收 */if(newconn != NULL){    /* 发送数据  */netconn_write(newconn,(void *)&getText,sizeof(getText),NETCONN_NOCOPY);netbuf_delete(TCPNetbuf);         netconn_close(newconn);       /* 关闭连接   */while(netconn_delete(newconn) != ERR_OK)OSTimeDlyHMSM(0, 0, 1, 0);}}
}
//*********************************************************
//
//            tcp 客户端测试程序
//
//*********************************************************
void my_tcp_client_thread(void *arg)
{struct netconn *conn;struct netbuf        *TCPNetbuf;
//  char *dat;err_t myerr;char Text[]="hello i am client!";static struct ip_addr serverip;         //目标机IPstatic unsigned short serverport;       //目标机端口号serverip.addr = htonl(0xC0A8016A);         //192.168.1.106serverport=7000;    conn = netconn_new(NETCONN_TCP);      /* 创建TCP连接  */netconn_bind(conn,NULL,7000);           /* 绑定本地地址和监听的端口号 */ OSTimeDlyHMSM(0, 0, 3, 0);UARTprintf("\033[2JTCP connect....\n"); myerr=netconn_connect(conn,&serverip,serverport);             //连接主机 cnn,目标机IP,端口号if(myerr==-1){UARTprintf("\033[2JTCP connect err\n");}else{UARTprintf("\033[2JTCP connect ok\n");}/* 建立一个新的netbuf */TCPNetbuf =netbuf_new();
//  netbuf_alloc(TCPNetbuf, 40);/* 引用这个文本给netbuf */netbuf_ref(TCPNetbuf,Text,sizeof(Text));while(1){    OSTimeDlyHMSM(0, 0, 3, 0);/* 发送文本 */netconn_send(conn,TCPNetbuf);netconn_write(conn,(void *)&Text,sizeof(Text),NETCONN_NOCOPY);OSTimeDlyHMSM(0, 0, 3, 0);/* 删除conn和buf */netconn_delete(conn);netbuf_delete(TCPNetbuf);}
}//*********************************************************
//
//            tcp 客户端测试程序
//
//*********************************************************
void my_udp_thread(void *arg)
{static struct netconn *conn;static struct netbuf  *UDPNetbuf;static struct ip_addr destip;           //目标机IPstatic unsigned short destport;       //目标机端口号unsigned char Array[]="hello i am udp!";destip.addr = htonl(0xC0A8016A);      //192.168.1.106destport=7000;  /* 建立一个新的netbuf */
//      UDPNetbuf =netbuf_new();conn = netconn_new(NETCONN_UDP);       //创建UDP连接netconn_bind(conn,IP_ADDR_ANY, 80);   //绑定端口号while(1){OSTimeDlyHMSM(0, 0, 3, 0);UARTprintf("\033[2JUDP connec...\n");/* 连接远程主机 */netconn_connect(conn,&destip,destport);/* 建立一个新的netbuf */UDPNetbuf= netbuf_new(); /* 引用这个文本给netbuf */netbuf_ref(UDPNetbuf,Array, sizeof(Array));/* 发送文本 */netconn_send(conn,UDPNetbuf);OSTimeDlyHMSM(0, 0, 3, 0); /* 删除conn和buf */netconn_delete(conn);netbuf_delete(UDPNetbuf);              //释放缓冲区}  }

最后附上一个TCP服务器接收并把收到的数据返回的参考

/* Grab new connection. */
        newconn = netconn_accept(conn);
    
        /* Process the new connection. */
        if (newconn) 
        {
          struct netbuf *buf;
          void *data;
          u16_t len;
      
          while ((buf = netconn_recv(newconn)) != NULL) 

          {
            do 
            {
              netbuf_data(buf, &data, &len);
              netconn_write(newconn, data, len, NETCONN_COPY);
            } 
            while (netbuf_next(buf) >= 0);
          
            netbuf_delete(buf);
          }
        
          /* Close connection and discard connection identifier. */
          netconn_close(newconn);
          netconn_delete(newconn);

参考文章 http://www.amobbs.com/thread-5059971-1-1.html

LWIP netconn TCP UDP测试 实例相关推荐

  1. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  2. OSI七层模型以及TCP/UDP客户端/服务端程序实例

    OSI七层模型以及TCP/UDP客户端/服务端程序实例 一.前言 二.OSI简介 2.1 OSI概念 2.2 划分原则 2.3 OSI七层模型 2.4 模型举例 三.Linux下TCP/UDP程序开发 ...

  3. php udp发送和接收_php socket通信(tcp/udp)实例分析

    本文实例讲述了php socket通信(tcp/udp)方法.分享给大家供大家参考,具体如下: 注意 1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1 2.server.p ...

  4. PacketSender —— TCP/UDP 包测试工具

    Packet Sender 是一个开源的发送和接收TCP/UDP包得测试工具.主线分支官方支持Windows,Mac和Ubuntu桌面Linux(开源),同时提供 Android 版本(免费).网络应 ...

  5. linux udp 端口测试,RAKsmart:Linux下TCP/UDP 端口测试及验证方法说明

    RAKsmart:Linux下TCP/UDP 端口测试及验证方法说明2020-06-11 在 Linux 系统中,有时需要在系统中测试端口的连通性,以便确认系统的TCP.UDP协议栈是否可以正常运行. ...

  6. Linux服务器上测试TCP/UDP端口的连通性

    目录 说明 测试tcp端口的连通性: 使用nc命令来测试udp端口的连通性: 使用nc命令来测试tcp端口的连通性: 使用案例如下: 说明 翻译自: How to Test Port[TCP/UDP] ...

  7. TCP/UDP端口连接测试

    TCP/UDP端口连接测试 TCP端口连接测试 测试主机与目标端口的网络是否通畅 telnet ip port UDP端口连接测试 1.测试目标端口是否正常(前提是目标主机上启动了服务端口,且本机与服 ...

  8. linux 开通udp 端口号,Linux 下 TCP/UDP 端口测试及验证方法说明

    Linux 下 TCP/UDP 端口测试及验证方法说明 在云服务器 ECS Linux 系统中,有时需要在系统中测试端口的连通性,以便确认系统的TCP.UDP协议栈是否可以正常运行.本文对此进行简要说 ...

  9. linux监测本机udp发动情况,Linux 下 TCP/UDP 端口测试及验证方法说明

    在云服务器 ECS Linux 系统中,有时需要在系统中测试端口的连通性,以便确认系统的TCP.UDP协议栈是否可以正常运行.本文对此进行简要说明. TCP端口测试 使用 telnet 测试现有监听端 ...

最新文章

  1. Docker 入门系列(3)- Docker 容器(创建、启动、终止、进入、删除、导入、导出容器、容器和镜像转化)
  2. 【MongoDB异常】Exception authenticating MongoCredential解决方法
  3. 谷歌邮箱上不了的情况下怎么登录谷歌邮箱
  4. 机器学习XGBoost——后面的明天更
  5. nginx进阶-动静分离,负载均衡
  6. j2me学习三_LCDui类学习(2)
  7. ABPZero系列教程之拼多多卖家工具
  8. 静物摄影用光技巧_摄影技巧:摄影如何用光?摄影大师总结的10点,非常受用!...
  9. 爬虫,反爬工具fake-useragent,随机useragent模块教程
  10. 141_Power Query之获取钉钉审批流自动刷新Power BI报告
  11. 分析数万条国庆旅游评论数据后,我发现了“坑爹”景点背后的秘密
  12. 洛谷——P1009 [NOIP1998 普及组] 阶乘之和
  13. BZOJ3757: 苹果树【树上莫队】
  14. 《神奇的数学》读后感_数学家的眼光读后感
  15. 微信可以登录,代理服务器没有响应
  16. A Benchmark and Simulator for UAV Tracking(论文翻译)
  17. C#由指定数据生成灰度位图或者彩色位图
  18. 厉害了!中国农历算法
  19. 【JavaScript】“...“是什么?
  20. 推荐不伤眼睛的文字背景色

热门文章

  1. 需要达到什么样的水平才能找到一份看起来不错的互联网实习?
  2. linux运行luminati,安装luminati的nodejs环境配置
  3. 汽车网络安全标准UN Regulation No.155和No.156汇总介绍
  4. Windows redis最新版本5.0.9下载
  5. java字节流与字符流的区别编码缓冲
  6. 怎样学习嵌入式软件开发
  7. android 微信分享注册链接显示app的logo出现黑边处理方案
  8. Python算法- 剪绳子
  9. icheck 动态设置选中,判断是否选择
  10. ROS入门-ROS的安装及编写简单的节点talker和listener