更新:到目前为止感谢您的帮助。我刚刚测试了从浏览器直接连接到它的程序,而不是通过XMLHttpRequest。直接从浏览器上运行是完美的。
但是,这个连接必须通过XMLHTTPRequest来处理。根据FireBug,它正在接收完整的响应(本例中为31字节)。它关闭连接,将readyState设置为4,但responseText完全为空。
我正在创建一个C++应用程序,它接受连接并响应,就像它是HTTP一样。我的目标是通过打开与这个C++应用程序的连接来创建一个实时聊天服务器,并在发送新消息时继续加载一个“页面”来响应。我现将下列资料发还:
HTTP/1.1 200 OK\r\n
传输-编码:分组\r\n
内容-类型:文本/普通\r\n
R\n
到目前为止,一切都正常。使用FireBug,我可以看到它正确地接收和解释头文件。但是,我不知道如何转发响应文本。我知道,在纯文本中,其内容如下:
5
你好
8
再见
但是,到目前为止,我尝试过的每一次迭代(使用\r\n,没有\r\n,将\r\n计算为额外的两个字节)都没有被浏览器正确地读取为响应文本。有人能帮忙制作一个合适的字符串作为响应文本发送吗?
发布于 2010-11-11 17:17:38
您应该以零长度块结束传输:
5
Hello
8
Good bye
0否则浏览器不知道您已经完成了。
发布于 2010-11-11 17:18:11
您正在尝试实现"HTTP“或HTTP流之类的,问题是并不是所有的浏览器都能正确地支持这一点,对于火狐/opera等浏览器来说,您可以尝试mime类型的multipart/x-mixed-replace,只要您保持连接正常并向下发送,火狐就应该阅读,但这在IE中是行不通的.
发布于 2010-11-11 17:18:08
“每个块从它嵌入的以十六进制表示的数据的八进制数开始,后面是可选参数(块扩展)和终止的CRLF (回车和行馈)序列,然后是块数据。”
你是用魔法作为你的长度吗?块长度后的\r\n不应计算在长度中。
另外,尝试用0长度关闭页面。这将使您知道浏览器在解析之前是否只是在缓冲。
https://stackoverflow.com/questions/4157104
复制相似问题