LwIP - raw/callback API、协议栈API(sequential API)、BSD API(或者说 SOCKET API)
1、使用raw/callback API编程,用户编程的方法是向内核注册各种自定义的回调函数,回调函数是与内核实现交换的唯一方式。
recv_udp, accept_function, sent_tcp, recv_tcp, do_connected, poll_tcp, err_tcp!
2、协议栈API(sequential API)是基于raw/callback API实现的,它与内核交换的方式也只能通过回调。
netconn_new, netconn_delete, netconn_getaddr, netconn_connect, netconn_disconnect, netconn_listen, netconn_accept,
netconn_recv, netconn_send, netconn_write, netconn_close
注: netconn_send 是给UDP使用的。
netconn_write是给TCP使用的。但是tcp发送时,有三种选择:
(1)NETCONN_COPY 标志告诉协议栈将待发送数据拷贝到内核进程所属的内存空间,在这种情况下,会消耗系统的部分时间和内存资源,但是用户进程
可以在向内核提交数据后立即重新使用这些数据区域,甚至删除这些区域,而不必等待内核是否完全正确发送。如果用户没有设置该位,则内核构造发送
数据包是,会引用这些发送数据的内存区域,在这种情况下,用户进程不能再对这些数据进行修改,这种方式通常用在静态数据(ROM数据)的发送中。
对于非ROM数据的发送,用户应尽量设置NETCONN_COPY标志。
(2)NETCONN_MORE标志,当其置位时,组装这些数据的最后一个TCP报文段首部PSH标志将被设置,这样,数据在接收端将被尽快的递交给上层,而不会缓冲等待。
3、BSD API(或者说 SOCKET API),是Lwip设计者对sequential API函数进行了简单封装后的函数。
socket、bind、connect、listen、accept、sendto、write、recvfrom、read、close。
sendto、recvfrom:主要用于UDP,但是也可用于TCP。
write、read:主要用于TCP,但是也可用于UDP。
LwIP - raw/callback API、协议栈API(sequential API)、BSD API(或者说 SOCKET API)的更多相关文章
- socket编程 ------ BSD socket API
伯克利套接字(Berkeley sockets),也称为BSD Socket.伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信. BSD Socket的应用 ...
- TCP协议和socket API 学习笔记
本文转载至 http://blog.chinaunix.net/uid-16979052-id-3350958.html 分类: 原文地址:TCP协议和socket API 学习笔记 作者:gilb ...
- 【ASP.NET Web API教程】1.1 第一个ASP.NET Web API
Your First ASP.NET Web API (C#)第一个ASP.NET Web API(C#) By Mike Wasson|January 21, 2012作者:Mike Wasson ...
- Creating Your Own Server: The Socket API, Part 1
转:http://www.linuxforu.com/2011/08/creating-your-own-server-the-socket-api-part-1/ By Pankaj Tanwar ...
- Creating Your Own Server: The Socket API, Part 2
转:http://www.linuxforu.com/2011/09/creating-your-own-server-the-socket-api-part-2/ By Pankaj Tanwar ...
- 【ASP.NET Web API教程】3.2 通过.NET客户端调用Web API(C#)
原文:[ASP.NET Web API教程]3.2 通过.NET客户端调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...
- UNIX网络编程——SOCKET API和TCP STATE的对应关系_三次握手_四次挥手及TCP延迟确认
在socket系统调用中,如何完成三次握手和四次挥手: SOCK_DGRAM即UDP中的connect操作知识在内核中注册对方机器的IP和PORT信息,并没有建立连接的过程,即没有发包,close也不 ...
- c/c++ socket API 调用后的错误判断 perror errno
socket API 调用后的错误判断 perror errno 调用完socket API后,需要判断调用是否成功与失败.如果失败,会自动设置errno(是个整数), 并且用perror可以打印出具 ...
- JNI 和 socket api
1.JavaVM 和 JNIEnvJNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立.JavaVM是虚拟机在JNI层的代表,在一个虚拟机进程中只有一个JavaVM,因此该进程的所有线程 ...
随机推荐
- 2,PyAudio 实现录音 自动化交互实现问答
Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库 关于音频, PyAudio 这个库, 可以实现开启麦克风录音, 可以播放音频文件等等,此刻我们不 ...
- 如何从海量IP中提取访问最多的10个IP
算法思想:分而治之+Hash 1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理: 2.可以考虑采用分而治之的思想,按照IP地址的Hash(IP) % 1024的值,把海量IP日 ...
- 用起来超爽的Maven——进阶篇
以后随着使用的maven的频率增加,此文件会越来越大,也是为什么需要把默认C:\Users\Administrator\.m2 \repository目录改变为D:/OpenSources/repos ...
- 谷歌js编码规范解析
http://alloyteam.github.io/JX/doc/specification/google-javascript.xm 阅读了谷歌js编码规范,我发现了很多,js的里面很多要注意的问 ...
- Qt 实现在隐藏标题栏情况下,窗口的缩放(未成功)
呃,这是一个悲剧的版本,在这版本中,我按照网上大神的说法,试了一下,但是没有效果,不知道出错在了那里,和昨天一样,也是,没有理想的效果,这里贴上代码,记录一下 资料连接:放评论 需要包含头文件 #in ...
- 虚拟现实-VR-UE4-创建第一个C++项目——Hello word
这部分主要是调用在C++中用代码实现在游戏界面上面输出一行文字 第一步,新建C++版本的工程文件,在4.12版本以后,在创建后,都会自动打开Vs编译器. 如下图 在VS中点击编译,等带编译,第一次等待 ...
- python 基础篇 04(列表 元组 常规操作)
本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...
- MyBatis实例教程--以接口的方式编程
以接口的方式编程: 只需要修改两个地方即可, 1.mapper.xml(实体类)配置文件, 注意mapper的namespace的名字是mapper对象的完整路径名com.xiamen.mapper. ...
- python 面试题: 列表表达式
[process() for item1 in iterable1 if condition1 for item2 in iterable2 if condition2 For item3 in it ...
- Linux 简单socket实现UDP通信
服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...