2 xiao851671244 xiao851671244 于 2016.03.06 17:08 提问

各位大神好,关于http和tcp协议

http协议建立在tcp协议之上,如果想要用tcp协议做一个web容器应该如何实现了?我记得在学java网络编程的时候老师也演示过使用tcp协议向访问者(浏览器)写出html样式界面!

今天我使用tcp协议也试了,确实可行,目前我遇到的是我想用tcp写一个web容器,现在虽然能访问,但是我还需要响应返回协议头和cookie信息到浏览器上,目前我的返回响应是:协议头+换行+html代码 这样的结果如下图:图片说明 如果带上协议头好像说的是返回200了 表示已经加载完成,但是我数据还没有传送完成到浏览器.... 如果不带响应数据可正常访问,但是响应数据没有 并不是我想要的! 不带上如下图:图片说明 好像说的不是很明白....

4个回答

WinsenJiansbomber
WinsenJiansbomber   2016.03.06 17:25
已采纳

给你一段参考代码, It Works!:

char HTTPMSG[] = "HTTP/1.0 200 OK\r\n"
    "Server: Socket Tiny\r\n"
    "Date:Fri, 1 Feb 2016 00:29:55 GTM\r\n"
    "Content-Type: text/html\r\n"
    "Accept-Ranges: bytes\r\n"
    "Content-Length: 108\r\n"
    "\r\n"
    "<html><head><title>Socket Tiny</title></head>\r\n"
    "<body>\r\n"
    "<h1><center>It works!</center></h1>\r\n"
    "</body></html>\r\n\r\n";
WinsenJiansbomber
WinsenJiansbomber   2016.03.06 17:24

HTTP协议要搞清楚一点,请求头和响应体之间有两个换行哦,两个哦!头中的信息完整点,如何Content-Length这个太有必要了。

oyljerry
oyljerry   Ds   Rxr 2016.03.06 18:23

主要是你返回的数据格式要正确 不但要符合协议格式还要满足浏览器对html内容的解析

zuishikonghuan
zuishikonghuan   2016.03.07 08:06

协议头和html之间需要两个换行。而且需要根据系统不同选择不同的换行,比如Windows为\r\n,Linux为\n,OS X为\r。。不过就算只返回\r\n一般来说浏览器也能解析

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!