hightman / xunsearch

免费开源的中文搜索引擎,采用 C/C++ 编写 (基于 xapian 和 scws),提供 PHP 的开发接口和丰富文档
http://www.xunsearch.com
Other
1.65k stars 391 forks source link

建议:在需要发送的结构中使用uint32_t代替所有int并在发送时转为网络序 #145

Open TsXor opened 1 year ago

TsXor commented 1 year ago

以结构体scws_response为例 https://github.com/hightman/xunsearch/blob/d1b72c797d7e77754c898b60b91fbec723ab064e/src/task.cc#L1977-L1982 根据后续代码,这个结构体是直接发送内存的。

如果客户端和服务端不在同一台服务器上,那么有可能客户端和服务端int大小不同或者字节序不同,关键是客户端和服务端都无法检测这一点。 最简单的方法是统一使用网络序(即大端)32位整数,已经足够表示4GB空间。如果32位整数可能不够,至少给客户端一个检测的手段(增加一个命令或在配置文件中加入这一项)