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,需要一次性从内核缓冲区中将接受到的包读取完毕。

  • 相关阅读:
    手写一个类django框架
    Django基础知识
    JQuery知识点总结
    javascript知识点整理
    html知识点一
    mysql之sql语句
    通过非IO阻塞模型实现ftp并发的小代码
    python学习第三十三节(IO模型)
    python学习第三十二节(进程间通信、进程池、协程)
    IntelliJ IDEA For Mac 快捷键
  • 原文地址:https://www.cnblogs.com/Forever-Kenlen-Ja/p/7992456.html
Copyright © 2011-2022 走看看