c - Safari 无法与我的 TCP 服务器配合使用

标签 c macos tcp

我制作了一个 TCP 服务器,它响应“Hello world!”对于每个请求,当我在 Chrome 上访问 127.0.0.1:1999 时,它显示“Hello world!”,但在 Safari (OSX Capitan) 上同样显示“Safari 无法打开页面,因为服务器意外断开了连接” ”

当我尝试 C 服务器示例时 here ,我看到同样的问题:它适用于 Chrome,但不适用于 Safari。然而,执行相同操作的 node.js 示例适用于两者。给出了什么?

使用 C TCP 服务器可以做什么来让 Safari 满意?我更关心的是确保我没有做错什么,而不是支持每个浏览器。

最佳答案

对于您引用的 C 代码示例,我怀疑您在响应中需要一个 Content-Length header 。

如果我没数的话,是 240 个字符。

char response[] = "HTTP/1.1 200 OK\r\n"
"Content-Type: text/html; charset=UTF-8\r\n\r\n"
"Content-Length: 240"
"<!DOCTYPE html><html><head><title>Bye-bye baby bye-bye</title>"
"<style>body { background-color: #111 }"
"h1 { font-size:4cm; text-align: center; color: black;"
" text-shadow: 0 0 2mm red}</style></head>"
"<body><h1>Goodbye, world!</h1></body></html>\r\n";

该页面上针对其他语言的一些其他实现完全是错误的并且无法正确发送回 HTTP 1.1。

如果您分享您的代码,我可以给出更好的答案。

关于c - Safari 无法与我的 TCP 服务器配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113551/

相关文章:

java - Java 版本 : Java 6 (in Terminal, Eclipse)和 Java 7(在 Java 控制面板中)的差异来源是什么?

php - 有 MAMP PRO 的免费替代品吗?

c++ - Boost asio tcp,为什么我不能在服务器端只有一个可以打开和关闭的数据套接字

c - C 中的稀疏数组和密集数组

c - 试图了解此 C 程序中静态和动态作用域之间的区别

c - 从哪里获得最新的 ANSI C 标准文档

ios - AFNetworking 无法识别 MAMP

c# - 表明已通过网络接收到所有数据的最佳方式?

c++ - 如何区分来自同一子网和不同 IP/用户的 sockaddr_in 结构

c++ - SFML 不会打开一个窗口?