示例web服务器和endianness

Sample web server and the endianness

本文关键字:endianness 服务器 web 示例      更新时间:2023-10-16

我已经构建了一个非常示例的web服务器,它带有非阻塞套接字作为Mac的命令行程序。

我使用的主要编程语言是C++,但在某些情况下也使用C。

我也在使用OpenSSL库,这样客户端就可以在网络浏览器中使用"https"。

网络服务器工作,客户端可以从网络浏览器访问它,他们会看到"Hello world"显示。

便携性对我来说非常重要,我的问题是:

  • 这里是否有我最早防止的endian问题(因为我只将程序用作web服务器)?

  • 发送时需要使用hton(),阅读时需要使用ntohl()吗?

  • 据我所知,图像总是以二进制形式发送的(还有其他文件应该以二进制方式发送吗?),但index.html等是以字符串形式发送的。所以我只能在图像上使用hton()?

谢谢你给我时间。我希望有人能简单地向我解释以上问题,因为我有兴趣了解如何正确地做事。

当您使用二进制协议时,您需要担心端序问题。例如,如果您将一个整数作为32位值发送,那么您需要担心字节顺序。

因为HTTP是一种文本协议,所以在发送或接收数据时不需要担心端序问题。在传输二进制文件(如图像)的情况下,文件只是一个字节序列,因此您可以按原样发送和接收它们。如果文件格式涉及任何endianness,那就是处理文件内容的程序需要担心,而不是简单地发送或接收的程序。