ipwx 最近的时间轴更新
ipwx

ipwx

V2EX 第 86855 号会员,加入于 2014-12-15 23:19:35 +08:00
今日活跃度排名 13106
ipwx 最近回复了
你应该关掉格式化插件

然后手动 pnpm lint
@franswish 不知道怎么搞定协议解析、切分消息(俗称解决粘包) = 我高中玩编程的水平。

那时候是真觉得这玩意儿也忒复杂了,怎么这么难搞。

现在嘛,不就是把 TcpConn 放到一个 Stream 里面,然后

string readNextChunk(int size) {
int nLeft = size;
string ret;
char buffer[8192];
while (nLeft > 0) {
int nRead = read(conn, buffer, min(nLeft, sizeof(buffer));
if (nRead == 0) {
break; // EOF
}
for (int i=0; i<nRead; ++i) {
ret.push_back(buffer[i]);
}
nLeft -= nRead;
}
return ret;
}

其实第一个认知更新,是在网络条件下,read(..., 8192) 不一定能给你真的读出来 8192 bytes ,你得用循环读。然后这部分写成一个通用函数(比如上面这个 readNextChunk) 就行了。用的时候

int nextMsgLength = fromLittleEndianUint32Bytes(readNextChunk(4));
string msg = readNextChunk(nextMsgLength)
楼主的需求是啥?

如果用 websocket 发送一个 message ,那它天然就是按 message 切分的,没问题。但是,message 有大小上限。如果你需要发送一个超过上限的 message ,你可能需要自己模拟一遍 “拆包”-“组装” 过程,相当于你用 websocket 消息流模拟了 tcp 的无消息流。

如果你想要在读取 post body 的时候期待客户端是一个一个数据包发送的,那不好意思,中间任何一个代理服务器甚至是路由器都可以修改数据包的形式,是可以任意重新组装重新切分的。
让别人用人民币交易,首先海外得有人民币吧。把人民币给出去的方法有两个:

1. 和其他任何国家都用人民币结算, **且中国进口大于出口** 。否则人家用人民币和你结算,你给他 7 元的货,人家手里只有 3 元的货,连问你买东西都不够,哪里还能用人民币和别人买东西呢?
2. 让别人买你的国债。

美国就是两条都走了,所以美元多到可以作为国际货币。

那么问题来了,人民币想走哪条路?
11 天前
回复了 myTrip 创建的主题 生活 拍婚纱照真累啊,我为什么要花钱买罪受
× 国民人心
√ 世界人心
11 天前
回复了 HkMuxxx 创建的主题 MacBook 毕业一年半 值得花 2 万买台 MacBook Pro 吗
非常值得。毕竟

我那 2021 款 32G 用到现在照样能打
你可以让 Cursor 帮你写个 Go 程序完成这件事,编译出来就是单 EXE 的。
其实我感觉,指示 AI 干活和让小弟干活一样。

如果不说清楚某个功能模块的详细设计(接口是什么样的、代码风格应该怎么写,可以用什么现有的其他模块),那小弟写出来就一坨…… AI 同理。

我也是花了好久才搞定了让小弟写出来我觉得 ok 的代码。
好几年前我也迷信过 static linking 、single binary executable ,觉得这样做个小工具给别人用很 cool 。觉得 python 拖一堆依赖库很麻烦。

现在嘛,面向工资编程了还管这个?依赖库大无所谓,写程序快就行 。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2719 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 15:23 · PVG 23:23 · LAX 08:23 · JFK 11:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.