跳至主要內容
如何更方便的使用 protobufjs?看了你就知道
怎么给 pb 消息添加消息号? 目前论坛里的方案: 二次包装(消息体封装消息体); 拼接消息号(拼接固定字节在消息头用于消息号解析); 我的方案: 使用默认值; 默认值是什么? 其实这是 protobuf 的语法特性,只需要在 ; 前面加上 [default = 默认值] 就可以定义一个属性的默认值 使用默认值有什么好处? 更好的性能; 节省传输字节;...

muzzik大约 2 分钟文章网络protobufjs
关于AcceptEx函数
1. AcceptEx 函数的第一个参数 listensocket 和第二个参数 acceptsock 不能相同。 2. 并且第一个参数 listen_socket 必须开启监听,否则会返回 10022 错误。 3. AcceptEx 函数的缓冲区如果设为 0 字节,那么每次发到客户端将延迟 10ms 左右,底层原因。。 4. 如果收到连接请求,Get...

muzzik小于 1 分钟笔记编程语言C++网络
C++判断是否为有效IP地址
如上:使用了新的 std::regex 正则表达式和新的 inet_pton 函数检测。你们猜猜结果? 在这里插入图片描述 看来还是微软检测牛逼啊。还是少用正则表达式。对于性能会有影响

muzzik小于 1 分钟笔记编程语言C++网络
WSASocket创建的Socket默认关闭了Nagle算法?
​ 如图所示, 通过 getsockopt 获取的返回值为 0, 并且 optval 也为 0(FALSE),根据百度词条上的解释那么就可以判断为是创建的时候默认关闭了 Nagle 算法 ​

muzzik小于 1 分钟笔记编程语言C++网络
WSASend体会以及WSAENOBUFS错误思路
1. 投递任意大小的缓冲区它都是立即返回 2. WSASend 返回成功只是表示将数据拷贝到了缓冲区 3. GetQueuedCompletionStatus 返回成功只表示发送成功,并不代表对方成功接收到数据 4. WSAWaitForMultipleEvents 和 WSAGetOverlappedResult 同 3 类似 个人结论:网上的宣称投...

muzzik大约 1 分钟笔记编程语言C++网络
C++ IOCP问题备注
​ 【1236 错误】情况如下: 1.client 连接 server 2.client 发送消息到 server 3.client 使用 closesocket(sock); 4.server 接收到关闭 socket 消息  (lpNumberOfBytesTransferred 为 0,  注意:如果客户端发送的是空消息同样为零)  然后使用 c...

muzzik大约 4 分钟笔记编程语言C++网络IOCP
关闭AcceptEx缓冲区导致延迟增加问题
经测试,在 AcceptEx 函数指针投递 accept 请求的时候如果把接收缓冲区的大小设置为零,那么 server 端消息到 client 端延迟会增加 10ms 左右(各机器性能不同...)    上对比图 关闭了缓冲区的server端 client端 咱们先不看第一个 client 链接,因为程序启动耗时的原因,所以拿第二个举例, 第二个执行 ...

muzzik大约 3 分钟笔记编程语言C++网络