LWIP应用指南学习。
一 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应用指南学习。的更多相关文章
- Hadoop权威指南学习笔记二
MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...
- 《JS权威指南学习总结》
JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html
- 《JS权威指南学习总结--开始简介》
本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...
- Hadoop权威指南学习笔记一
Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...
- Hadoop权威指南学习笔记三
HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- CSS权威指南学习笔记系列(1)CSS和文档
题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...
- lua游戏开发实践指南学习笔记1
本文是依据lua游戏开发实践指南做的一些学习笔记,仅用于继续自己学习的一些知识. Lua基础 1. 语言定义: 在lua语言中,标识符有非常大的灵活性(变量和函数名),只是用户不呢个以数字作为起始符 ...
随机推荐
- EVC入门之二: 在未被加载的DLL中设置断点 (虽然没有遇到这个问题,不过先摘抄下来)
问题: 这个问题居然也郁闷了我一段时间. 我们假设在EVC里建立了一个project, 里面有SubProject_1(以下简称SB1,嘿嘿), 编译生成一个EXE; SubProject_2(以下简 ...
- liunx让命令窗口显示段路径的方法
平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长,有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题: 1,修改.bashrc文件(用户根目录下) ...
- Data Guard 异构平台支持手册
背景 最简单的DG 环境是同数据库版本,同操作系统平台. 但有时需要在异构平台上来部署DG 环境,比如异构下使用DG 来进行数据迁移,从而降低停机时间和风险等等. 1. 查看主备库的Platform ...
- Scala学习——类,继承,接口(中)
基本类的使用:(初) package com.dtspark.scala.basics /** * trait是一个接口 * 接口的第一次继承用extends,多继承时用with * 多继承时,如果这 ...
- SpringMVC之三:配置Spring MVC Controller
一.Controller配置方式 第一种 URL对应Bean如果要使用此类配置方式,需要在XML中做如下样式配置 以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,此类方式仅 ...
- Linux命令总结_touch创建文件
1.touch命令,用来创建文件或者修改文件时间戳 格式:touch [选项]... 文件... 选项 : -a 或--time=atime或--time=access或--time=use 只 ...
- 正则表达式 LINUX
正则表达式 热身 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 例如 g ...
- Hibernate Session的delete()方法
本文介绍Hibernate Session的delete()方法.delete()方法用于从数据库中删除与Java对象对应的记录.对应游离对象和持久化对象,delete语句会做出不同的反应. AD: ...
- 在Spring环境下存取properties文件…
Spring中PropertyPlaceholderConfigurer的使用 (1) 基本的使用方法是 classpath:/spring/include/dbQuery.properties 其中 ...
- boost编译配置及简单使用
boost编译配置及简单使用 1.下载 http://www.boost.org/ 2.编译: A.解压 boost_1_55_0.zip 到boost路径 B.运行 bootstrap.bat. 会 ...