示例 Web 服务器和字节顺序
Sample web server and the endianness
我已经为 Mac.
构建了一个带有非阻塞套接字作为命令行程序的示例 Web 服务器
我使用的主要编程语言是 C++,但在某些情况下也使用 C。
我也在使用 OpenSSL 库,因此客户端可以在 Web 浏览器中使用 "https"。
Web 服务器正常工作,客户端可以从 Web 浏览器访问它,他们将看到 "Hello world" 显示。
可移植性对我来说非常重要,我的问题是:
这里有没有我最先防止的字节序问题(因为我只将我的程序用作网络服务器)?
发送时需要使用htonl(),阅读时需要使用ntohl()吗?
据我所知,图像始终以二进制形式发送(是否还有其他文件也应以二进制形式发送?),但 index.html 等以字符串形式发送。所以我必须只在图像上使用 htonl()?
感谢您抽出时间我希望有人能简单地向我解释上述问题,因为我有兴趣了解应该如何正确完成事情。
当你有一个 binary 协议时,你需要担心字节顺序。例如,如果您将整数作为 32 位值发送,那么您需要担心字节顺序。
由于 HTTP 是一种文本协议,因此在发送或接收数据时无需担心字节序问题。在传输二进制文件(例如图像)的情况下,文件只是一个字节序列,因此您可以按原样发送和接收它们。如果文件格式涉及任何字节顺序,那是处理文件内容的程序需要担心的,而不是简单地发送或接收的程序。
我已经为 Mac.
构建了一个带有非阻塞套接字作为命令行程序的示例 Web 服务器我使用的主要编程语言是 C++,但在某些情况下也使用 C。
我也在使用 OpenSSL 库,因此客户端可以在 Web 浏览器中使用 "https"。
Web 服务器正常工作,客户端可以从 Web 浏览器访问它,他们将看到 "Hello world" 显示。
可移植性对我来说非常重要,我的问题是:
这里有没有我最先防止的字节序问题(因为我只将我的程序用作网络服务器)?
发送时需要使用htonl(),阅读时需要使用ntohl()吗?
据我所知,图像始终以二进制形式发送(是否还有其他文件也应以二进制形式发送?),但 index.html 等以字符串形式发送。所以我必须只在图像上使用 htonl()?
感谢您抽出时间我希望有人能简单地向我解释上述问题,因为我有兴趣了解应该如何正确完成事情。
当你有一个 binary 协议时,你需要担心字节顺序。例如,如果您将整数作为 32 位值发送,那么您需要担心字节顺序。
由于 HTTP 是一种文本协议,因此在发送或接收数据时无需担心字节序问题。在传输二进制文件(例如图像)的情况下,文件只是一个字节序列,因此您可以按原样发送和接收它们。如果文件格式涉及任何字节顺序,那是处理文件内容的程序需要担心的,而不是简单地发送或接收的程序。