其实这么写是为了方便一些,但代价是,让自己的协议非常古板。为什么会方便一些呢?因为他可以一开始就malloc这么大的空间,而整个包都可以写进去。

解决方案 »

  1.   

    因为我发送的数据 包大小是不固定的 首先 它里面的buffer数组定义默认长度MAXIMUMPACKAGESIZE  长度浪费 更重要的是有可能存储不完 所以直接改宏定义是不可取的  但是我现在找不到更好的办法了 
      

  2.   

    一般来讲MAXIMUMPACKAGESIZE 定义一个合适的长度例如 4096 或 8192之类的都没问题,看你的程序而定。
    或者你可以重新设计你的数据包以适应MAXIMUMPACKAGESIZE 。MAXIMUMPACKAGESIZE 是最大长度,不是固定长度。
    WSASend的sendbuf参数是带有长度描述的。大多数情况下我们发送的包长度都是不固定的,所以设计的时候要有个包头来确定长度