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



我制作了一个TCP服务器,它对每个请求都会响应"Hello world!",当我在Chrome上转到127.0.0.1:999时,它会显示"Hello world!",但在Safari(OSX Capitan)上也会显示"Safari无法打开页面,因为服务器意外断开了连接。"

当我在这里尝试C服务器的例子时,我看到了同样的问题:它可以使用Chrome,但不能使用Safari。然而,node.js的例子做了同样的事情,对两者都有效。什么东西?

使用C TCP服务器可以做些什么让Safari感到高兴?与其说我关心支持每一个浏览器,不如说我关心确保自己没有做错什么。

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

如果我把字符数对的话,是240。

char response[] = "HTTP/1.1 200 OKrn"
"Content-Type: text/html; charset=UTF-8rnrn"
"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>rn";

该页面上其他语言的一些实现是完全错误的,并且没有正确地发送回HTTP1.1。

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

最新更新