一 TCP接口函数:tcp_init() 必须在调用其它TCP函数之前调用,必须用一个硬件定时器来配置每TCP_FAST_INTERVAL (ms)调用一次tcp_fasttmr() ;每TCP_SLOW_INTERVAL (ms)调用一次tcp_slowtmr().
二 UDP接口函数:

2.1创建:struct udp_pcb *udp_new(void),对应的删除void udp_remove(struct udp_pcb *pcb),调用创建之后就不需要改网络连接来通讯了,删除以释放占用资源。

2.2绑定本地IP和端口号:err_t udp_bind(struct udp_pcb *pcb,struct ip_addr *ipaddr,u16_t port)

2.3将指定的PCB连接到远程主机(不收发任何网络数据)err_t udp_connect(struct udp_pcb *pcb,struct ip_addr *ipaddr,u16_t port),对应的是断开连接void udp_disconnect(struct udp_pcb *pcb)

2.4连接后就可以调用发送函数将pbuf数据通过PCB(指定的ip和端口号,如果没有指定该函数将随机分配一个端口号发送出去)发送出去,err_t udp_send(struct udp_pcb *pcb, struct pbuf *p)

2.5err_t udp_sendto(struct udp_pcb *pcb,struct pbuf *p,struct ip_addr *dst_ip,u16_t dst_port)相当于2.3和2.4的组合,如果在调用该函数之前调用了2.3,则2.3的端口和IP将被该函数覆盖。

2.6数据接收:void udp_recv(struct udp_pcb *pcb,void (* recv)(void *arg, struct udp_pcb *upcb,struct pbuf *p,struct ip_addr *addr,u16_t port),void *recv_arg)函数recv是收到数据时的回调函数需要自行设计,最后一个是回调函数的参数。

三UDP例子解析

3.1UDP客户端

struct pbuf *p;
p = pbuf_alloc(PBUF_RAW,sizeof(UDPData),PBUF_RAM);
p->payload=(void *)UDPData;//指定发送缓冲区
IP4_ADDR(&ipaddr,192,168,1,16);//设定远程服务器IP
UdpPcb = udp_new();
udp_bind(UdpPcb,IP_ADDR_ANY,1025); /* 绑定本地 IP 地址 和端口号*/
udp_connect(UdpPcb,&ipaddr,1025); /* 连接远程主机和端口 */
while(1)
{
udp_send(UdpPcb,p); //向远程服务器发送数据

。。。

}

3.2TCP_WebSever:

void http_init(void)
{
struct tcp_pcb *pcb;
pcb = tcp_new(); /* 建立通信的 TCP 控制块(pcb) */
tcp_bind(pcb,IP_ADDR_ANY,80); /* 绑定本地 IP 地址和固定端口号80 */
pcb = tcp_listen(pcb); /* 进入监听状态 */
tcp_accept(pcb,http_accept); /* 设置有连接请求时的回调函数 */
}

static err_t http_accept(void *arg,struct tcp_pcb *pcb,err_t err)
{
tcp_setprio(pcb, TCP_PRIO_MIN); /* 设置回调函数优先级,当 存在几个连接时特别重要 此函数必须调用*/
tcp_recv(pcb,http_recv); /* 设置 TCP 段到时的接收回调函数 */
err = ERR_OK;
return err;
}

3.3TCP客户端:

void TCP_Client_Init()
{
struct tcp_pcb *Clipcb;
struct ip_addr ipaddr;
IP4_ADDR(&ipaddr,192,168,1,16);//远端服务器IP
Clipcb = tcp_new(); /* 建立通信的 TCP 控制块(Clipcb) */
tcp_bind(Clipcb,IP_ADDR_ANY,1026); /* 绑定本地 IP 地址和端口号 */
tcp_connect(Clipcb,&ipaddr,1026,TcpCli_Connected);//有连接时的回调函数
}

err_t TcpCli_Connected(void *arg,struct tcp_pcb *pcb,err_t err)
{
tcp_write(pcb,TCP_TestData,sizeof(TCP_TestData),0); /* 客户端连接上主机后发送的测试数据 */
tcp_close(pcb);
return ERR_OK;
}

LWIP应用指南学习。的更多相关文章

  1. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

  2. 《JS权威指南学习总结》

    JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html

  3. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

  4. Hadoop权威指南学习笔记一

    Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...

  5. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  6. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  7. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  8. CSS权威指南学习笔记系列(1)CSS和文档

    题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...

  9. lua游戏开发实践指南学习笔记1

    本文是依据lua游戏开发实践指南做的一些学习笔记,仅用于继续自己学习的一些知识. Lua基础 1.  语言定义: 在lua语言中,标识符有非常大的灵活性(变量和函数名),只是用户不呢个以数字作为起始符 ...

随机推荐

  1. 通过在classpath自动扫描方式把组件纳入spring容器中管理。

    前面的例子我们都是使用xml的bean定义来配置组件,如果组件过多很臃肿.spring2.5引入了组件自动扫描机制,在指定目录下查找标注了@Component.@Service.@Controller ...

  2. listen 59

    Different Brain Regions Handle Different Music Types (Vivaldi) versus (the Beatles) . Both great. Bu ...

  3. PageMethods

    主要是用到ScriptManger,老知识Mark一下,ScriptManager要EnablePageMethods="true" 后台 using System.Web.Scr ...

  4. RT-Thread的线程(任务)处理 rt_thread_create/rt_thread_init区别

    RT-Thread中使用线程这个概念,而不是任务.两者相似,我在这里把他的线程当作任务来理解了 1.任务处理: 动态任务相关API 创建任务:rt_thread_create函数,创建任务之后会返回r ...

  5. 【转】Pro Android学习笔记(五):了解Content Provider(上)

    Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider ...

  6. SpringMVC之四:渲染Web视图

    理解视图解析 在前面的例子中,我们看到控制器返回的都是一个逻辑视图的名称,然后把这个逻辑视图名称交给view resolver,然后返回渲染后的 html 页面给 client. 将控制器中请求处理的 ...

  7. HDU - 1176 免费馅饼 DP多种状态转移

    免费馅饼 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了 ...

  8. framework资源文件读取

    1.在framework里面读framwork自己的资源文件 这是framework内部的资源,跟其他都没有关系.但是framework不能单独存在,必须要放在某个“主程序”中才能起作用.bundle ...

  9. 在GridView的RowDataBound事件中获取某行某列的值!

    protected void gdvOrders_RowDataBound(object sender, GridViewRowEventArgs e)   {               if (e ...

  10. solidity 学习笔记(7)内联汇编

    为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public ...