zoukankan      html  css  js  c++  java
  • 网络编程-开发注意要点

    将近做了一年的网络编程,串口、USB通讯的开发,主要是负责处理具体的通讯逻辑,提供给C#和android等上层应用相关的API

    现总结一下具体网络编程需要注意的关键点,随着开发的深入,以后会不断增加:

    要点:
    一、网络编程框架的选择、选择原始socket,还是成熟的网络库boost asio,libevent,muduo,libuv,poco等。
    二、通讯模式选择TCP还是UDP,sokcet选择阻塞还是非阻塞,调用方式选择异步调用还是同步调用。
    三、超时处理的相关问题,如果是TCP,需要处理TCP收发包的完整性,防止粘包,如果是阻塞socket,需要关注内核缓冲区满的情况,设置超时,连接的建立,断开等的处理。
    四、异步方式缓冲区buffer的设计,数据包的处理,比如发送端发送过快,接收端接受较慢等问题在缓冲区如何处理。
    五、通讯协议格式的设计,使用xml,json,protobuffer还是其他二进制协议格式。
    六、通讯协议是否需要确认包的应答机制,心跳的设计。

    七、多线程编程的问题。

    八、无论采用epoll模式还是select模式,都需要设计应用层缓冲区,为了防止busy loop,需要一次性从内核缓冲区中将接受到的包读取完毕。

  • 相关阅读:
    socket阻塞与非阻塞,同步与异步
    Python列表切成多个/生成多个空列表
    virtualbox 下windows与虚拟机实现文件共享---挂载
    centos安装mysql
    centos安装Python2.7
    在遍历或者迭代过程中对集合进行增删 都会发生异常(迭代器的并发异常)
    List
    LinkedList
    增强for循环
    Collection中的迭代器
  • 原文地址:https://www.cnblogs.com/Forever-Kenlen-Ja/p/7992456.html
Copyright © 2011-2022 走看看