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。

最新文章

  1. 吐槽CodeDom
  2. CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制
  3. Nand Flash与Nor Flash的区别
  4. 网络编程(一) 利用NSURLSession发送GET POST请求
  5. java String 去除空格
  6. HDU6043 KazaQ's Socks
  7. HDU1175 连连看(DFS)
  8. server.xml 解析
  9. 收藏:视频网站(JavaEE+FFmpeg)/Nginx+ffmpeg实现流媒体直播点播系统
  10. ETL过程跑完后,使用python发送邮件
  11. 【转】EDID的简介和解析
  12. JavsScript学习---快速排序
  13. 学习Acegi应用到实际项目中(12)- Run-As认证服务
  14. python学习日记(join,range)
  15. OPTIMIZER_INDEX_COST_ADJ 与OPTIMIZER_INDEX_CACHING 参数说明
  16. iOS UI布局-回到顶部
  17. 如何使用网格搜索来优化深度学习模型中的超参数(Keras)
  18. Oracle控制文件
  19. XE里, TStringField 还是 ansi的
  20. sql server 修改表字段信息

热门文章

  1. idea添加源代码目录,编译代码出现时钟样式
  2. 初步学习pg_control文件之三
  3. 用ServiceStack操作使用redis的问题
  4. 【面试题】2018年最全Java面试通关秘籍第五套!
  5. runtime总结 iOS
  6. Linux 下安装Python报错:zlib not available
  7. tensorflow nmt基本配置(tf-1.4)
  8. [HNOI2012]三角形覆盖问题
  9. 九度OJ--Q1165
  10. FFT的物理意义(转载)