Safari没有';我不能使用我的TCP服务器

Safari没有';我不能使用我的TCP服务器,c,macos,tcp,C,Macos,Tcp,我制作了一个TCP服务器,对每个请求都响应“Hello world!”,当我在Chrome上转到127.0.0.1:1999时,它会显示“Hello world!”,但在Safari(OSX Capitan)上同样显示“Safari无法打开页面,因为服务器意外地断开了连接。” 当我尝试C服务器示例时,我看到了相同的问题:它可以与Chrome一起使用,但不能与Safari一起使用。但是,node.js示例可以同时处理这两种情况。有什么好处 使用C TCP服务器可以做些什么来让Safari开心呢?我

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

当我尝试C服务器示例时,我看到了相同的问题:它可以与Chrome一起使用,但不能与Safari一起使用。但是,node.js示例可以同时处理这两种情况。有什么好处


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

对于您引用的C代码示例,我怀疑您在响应中需要一个
内容长度
标题

如果我数对了,是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";
char response[]=“HTTP/1.1 200正常\r\n”
“内容类型:text/html;字符集=UTF-8\r\n\r\n”
“内容长度:240”
“再见,宝贝,再见”
“正文{背景色:#111}”
“h1{字体大小:4厘米;文本对齐:居中;颜色:黑色;”
“文本阴影:0 0 2mm红色}”
“再见,世界!\r\n”;
该页面上针对其他语言的一些其他实现是完全错误的,并且没有正确地发回HTTP 1.1


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

有一个非常棒的Windows工具和一个类似的Mac工具,它允许您检查浏览器和服务器之间的HTTP请求/响应。当出现协议错误时,这些工具通常会标记该问题。事实证明,它不是内容长度,而是其他标题。FWIW,我的代码在这里: