Safari无法与我的TCP服务器一起使用

时间:2015-12-06 03:06:22

标签: c macos tcp

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

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

使用C TCP服务器可以使Safari变得快乐吗?我不太关心支持每一个浏览器而不是确保我没有做错事。

1 个答案:

答案 0 :(得分:0)

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

如果我把这些角色算好,那就是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。

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