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

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

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

4个回答

给你一段参考代码, 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";

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HTTP协议、TCP协议
HTTP协议:https://blog.csdn.net/weixin_39780047/article/details/88850857 TCP协议:
关于http协议与tcp协议的一点总结
tcp协议 1)服务器维护一个tcp长连接,只需要维护ip+端口+客户端ID,前两个属于链接的本质属性,后一个属于业务属性,主要是希望可以减少数据的传输(如果没有客户端ID,每次输出数据都必须带上这个,所以最好直接维护在链接里面) 2)心跳包不属于链接需要维护的东西,它只是确保链接存在且有效的手段,与链接本身没有关系,错误异常处理都属于这个范畴 3)数据传输协议可以自由定义,但是最重要的是...
关于http协议,tcp/UDP协议
tcp/UDP:同:同为美国国防部设计的两个协议,处于tcp/ip协议的传输层 异:1.流式与报文式传输 2.连不连接 3.对系统资源的要求(TCP较多,UDP少); 4.UDP程序结构较简单; 5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。 注:三次握手:client A ;server B A-&amp;gt;B,B-&amp;gt;A,A-&amp;gt;B 四次挥手: A-...
TCP协议与HTTP协议的联系
TCP/IP协议是客户端与服务端进行数据交互的一种协议方式,那么它是如何与服务端进行数据交互的?与HTTP协议又有什么联系? HTTP协议是获取地址,传递数据的一种基于请求与响应模式的、无状态的、应用层的协议。其通常基于TCP的连接方式进行数据的请求与响应,但是,TCP协议又是如何定位到所需要的服务器的?这就要说道网页中URl的组成。 网页中的URl栏从左往右依次为协议、域名、
HTTP协议与TCP协议的关系
1:http协议返回的限制,请求的限制。 2:byte字符编码的问题。 3:顺序关系
HTTP协议及TCP分析
1. Http是无状态协议HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成...
HTTP和TCP协议区别
1 tcp连接   手机能够使用互联网功能是因为手机底层实现了tcp/ip协议,可以是手机终端通过无线网络建立tcp连接。
http 协议 tcp/udp
从本地读取文件,然后通过自己Udp 或者tcp 发送出去,走的是http协议,在客户端可以通过vlc来 接受
Http协议及TCP
1. 了解部分有意义的头部信息 头部信息 Catch-Control:max-age=100 静态资源缓存100s Content-Type,Content-Encoding 等 用来约束数据类型 Cookie 保持会话信息 CORS 实现跨域并保持安全性限制 2. 页面如何到达浏览器并展现给用户 Redirect(...
HTTP协议之TCP之三次握手
[size=medium][b]TCP 创建连接中三次握手都做了那些事?[/b][/size] [b]第一次:[/b] 客户端:在吗? 服务端:在。 [b]第二次:[/b] 客户端:可用吗? 服务端:可用。你确定要用吗? [b]第三次:[/b] 客户端:是。我们开始吧。 服务端:好。 链接创建成功。开始通信。 ———————————————————...
netty关于http和tcp协议整合
客户终端私用netty通信同时和web通信使用不同的协议tcp和http
关于tcp/udp/http协议的理解:
目录• Tcp ”面向连接”• Udp “面向非连接”• Http &amp;amp;quot;用于www浏览的协议&amp;amp;quot; • Tcp ”面向连接” 即在正式通信前必须和对方先建立起连接.一个tcp必须要经过三次对话才能建立起来。 第一次 A向B发出连接请求数据包; 第二次 B向A发送统一连接和要求同步(AB一个在发送一个在接受); 第三次 A向B确认B的要求同步,之后A才向B发送文件。 让我们来举一个小例子:...
TCP作业抓包——TCP、HTTP协议
一、实验目的 学习使用网络抓包软件WireShark,理解网络协议实体之间的交互,巩固所学知识。掌握HTTP请求、响应的报文格式,分析、掌握HTTP请求、响应的过程。 二、实验内容 分析Http协议请求及响应过程,掌握Tcp报文的格式。
wcf http改tcp协议
现在有一个项目,基于wcf做的,当时使用的http协议,现在要改成tcp协议,我简单研究两张协议区别,就是配置文件app.config里面使用binding类型不一样,访问路径不一样。以前是通过http:XX:XX/XX.svc 这种模式,能改成tcp协议吗?要该不是不只用该app.config里binging,需要修改其他配置吗?求大神给点指点,谢谢!
tcp转http协议工具
使用说明,在ubuntu环境,解压,进入/utils/websockify目录下,执行命令 ./run 6670 127.0.0.1:6699 6670为http端口,6699为tcp的端口
Http协议与TCP协议简单理解后续
大约2年前写了一篇关于HTTP协议与TCP协议的文章,原文链接。最近再次简单读了一遍《TCP/IP协议卷》,有了一些新的理解。这篇文章没有一个很好的连贯性,都是我在读书过程中总结的知识点,整体比较松散,但是个人感觉知识点都是非常重要,有很多地方让我明白了迷惑很久的问题。 写了这么长时间的代码,发现自己对TCP/IP了解的并不是很透彻。虽然会用C#的HttpClient类来进行网络编程,也可...
PPP协议串口 拨号 TCP HTTP协议
PPP协议串口 拨号 TCP HTTP协议
协议tcp/http常见问题&知识点
tcp 链接 建立链接的时候 什么情况会出错 http 错误码 http头部信息监测 tcp建立连接过程 , 可能会出现什么问题失败 tcp建立连接 传输数据过程 关闭链接过程 time_wait情况 可能潜在危害static关键字编译的时候 会有哪些问题 链接的时候 会有哪些问题 ip协议栈优化:点? 服务器端 ,高性能 网络调优参考: https://hit-alib
TCP/IP协议与HTTP协议概述
熟悉计算机网络的都知道OSI 七层网络结构图,由上至下:应用层 ;表示层 ;会话层 ;传输层 ;网络层 ;数据链路层;物理层; 参考网上一张图: TCP/IP 的四层结构图分别是:应用层;传输层;网络层和数据链路层(网络接口层)。如下图是网上找到的一个图片显示了TCP/IP协议族的组成。通常使用的网络是在TCP/IP协议族的基础上运作的,而HTTP属于其内部的一个子集。 TCP/IP...
TCP/IP的开肠破肚(4)
TCP/IP,UDP.TCP.ID.网络编程
Android Http和TCP协议编程
http包括httpclient和httpurlconnection使用: //UrlConnection操作://加载图片: String addr = “http://10.0.2.2:8080/time/1.jpg“; URL url = new URL(addr); InputStream in = url.openStream();
Http协议及TCP/IP协议详解
一:TCP/IP协议我们在开发中基本不用用到,但是弄明白TCP/IP协议会让我们对网络通信有个更加透彻的理解,在面试中TCP/IP协议基本也是必问的知识点二: TCP/IP协议分层TCP/IP协议一共分为4层,应用层,传输层,网络层,数据链路层 下面详细的讲解这几层所涉及的到协议三:.应用层之http协议:http协议又叫做超文本传输协议。分为请求和响应两部分 1 所谓的HTTP请求,也就是We
tcp http协议简单区别
1、http应用层协议,可以自定义服务端,比如需要字符串abc才能达成协议 2、socket是应用层与传输层的桥梁 3、三次握手(都是tcp)一、客户端发送包到服务器,进入状态,等待服务器确认 二、服务器收到包,发送确认包,进入状态 三、客户端收到服务器包,向服务器发送确认包,握手完毕
各位大神好 求助
现在有个做好的网站,有一个待办工作弹出提醒的功能,现在是20秒重载一下提醒消息的页面。rnrn想实现一个功能:rnrn重载页面之前 做一个判断rn1.通过session取得当前用户的userNamern2.查询表qp_AddworkFlow2 里有没有某一列等于username 而且STATE=‘ 等待办理’rn3.如果有,则重载页面rn4.如果没有,则将表qp_message 内所有receptname=username 并且sfck=’否‘的行 的sfck 值改为 是 。 rnrn没有源码,最好直接做在页面上。rnrn重载页面的方法是做在页面上的rnrn$(function()rn setInterval("reloadFrame()",20000);rn);rnfunction reloadFrame()rn tx.window.location.reload()rnrnfunction killErrors() rnreturn true;rnrnwindow.onerror = killErrors;
HTTP协议、TCP协议、IP协议和TCP/IP协议区别
TCP/IP协议TCP/IP协议在上一篇文章中网络协议详解我已经很详细的讲解了.所以在这一篇中,我简单说一下如果想要详细了解,请参考上篇文章. TCP/IP协议看上去好像是TCP协议和IP协议,但其实并不一样 TCP/IP协议叫做网络通信协议,它包括上百个协议,而HTTP协议、TCP协议、IP协议只是TCP/IP协议中的一部分. TCP/IP协议是用于计算机通信的一组协议,我们通常称它为TCP
T/TCP (TCP事务协议) HTTP (超文本传送协议) UNIX域协议
练掌握的四个基本方面: T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更有效和更可靠; HTTP (超文本传送协议),这是飞速扩展中的万维网的基础; NNTP (网络新闻传送协议),这是Usennet新闻系统的基础; UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。
http协议及http协议和tcp协议的区别
http是应用层的协议,并且无连接,无状态的协议。 http协议的特点:   1.支持c/s模式   2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,head。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快。   3.灵活:http允许传输任何类型的数据对象。有content-type标记
HTTP代理服务-协议查看器(分析和破解HTTP协议的好工具)
 因为近几年一直都在弄网络推广方面的程序,所以要经常研究和分析网站的HTTP内容,以前一直用Wireshark来进行分析工作,但由于Wireshark只能显示英文字符还有Wireshark显示的数据很多很乱,对分析工作带来很多的不便,所以就一直就有写一个HTTP的代理服务器去分析HTTP数据的想法,但一直又懒得去动手,最近在网上找到一个各种服务器协议的源代码,其中也有HTTP代理服务器的代码,就有改写它为分析程序的冲动,不过这个源代码中的HTTP代理服务器的代码只能支持单连接的代理工作,对于IE的高速并行多连接支持不行,所以也花了我不少的时间去完善它的代码,终于也完美的支持并行多连接和HTTPS了!rnrn具体介绍和下载地址,请到我的博客看看吧rn[url=http://blog.csdn.net/flashcom/article/details/6894639][/url]rn
HTTP协议HTTP协议HTTP协议HTTP协议
HTTP协议HTTP协议HTTP协议HTTP协议HTTP协议
关于协议(TCP/IP)
[b]所谓协议,即对计算机必须遵守规则的描述。[/b] TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol),是供已连接因特网的计算机进行通信的通信协议, 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。 在 TCP/IP 中包含一系列用于处理数据通信的协议: 1、TCP ...
关于tcp协议的问题
我在书上看到的TCP/IP的三次握手的方法是: rn A→B:SYN(序列号=M) rn B→A:SYN(序列号=N),ACK(应答序号=M+1)rn A→B:ACK(应答序号=N+1) rnrn但是照上面的方法来说的话,比如客户端向服务器80端口发送SYN,应该是服务器的80端口和客户端进行三次握手并且以后保持数据通信,但是实际情况是服务器分配另一个端口来专门和客户端进行三次握手并且以后保持数据通信阿,这是为什么呢?工作原理是什么?rnrn还有一个问题:rn我的机器向服务器80端口发送http请求并且用下面的命令监视了很多服务器80 端口传过来的数据: rntcpdump tcp and src port 80rnrn这又是为什么呢?实际情况是服务器分配另一个端口来专门和客户端进行三次握手并且以后保持数据通信,这样的话和服务器的80端口的通信量应该非常小才对阿rnrn本人是正在学习tcp/ip协议的菜鸟,谢谢指教
请教关于TCP协议
TCP连接是3次握手,以下是第一次握手的报文,是我向服务器发送的rn78 45 C4 2D 4C 81 //macrn00 0C 29 44 DF 4C //macrn08 00 //typern4 //versionrn5 //lengthrn00 //tosrn00 28 //total lengthrn67 45 //idrn40 00 //flagsrn80 //ttlrn06 //protocolrn83 AC //checksumrnC0 A8 47 42 //iprnC0 A8 47 4B //iprnC3 50 //portrn00 50 //portrn00 00 00 01 //seqrnC6 23 7B 32 //ackrn50 //header lengthrn02 //flagsrn16 D0 //window sizern94 35 //checksumrn00 00 //urgentrn大家帮忙看下有错吗?收不到服务器向我发送的第二次握手报文。rn
关于HTTP、TCP的困惑!!
rnrn我们知道, 大家经常听到的数据库连接池, 是为了避免频繁的与数据库打交道建立连接延时而保持住的连接;rnrnrn可是我们也知道 HTTP 请求却不关心这种连接次数, 一个HTTP请求可能包含十几个TCP连接!~ 但性能却没有什么影响!rnrn是数据包太小的问题吗?。 我觉得不太可能是这种原因rnrn[color=#0000FF]=====★===我===是===题===目===间===的===小===分===隔===符===★=====[/color]rnrnrnHTTP的连接关闭时有服务器发起的, 在服务器主机上产生的时延会不会影响性能呢rnrnrn[color=#0000FF]=====★===我===是===题===目===间===的===小===分===隔===符===★=====[/color]rnrnrnHTTP是面向报文的, 而TCP是面向字节的rnrn所以HTTP在TCP上 包装了一层支持报文的HTTP-NG,rnrnHTTP-NG 的解释是 在单个TCP连接上, 提供多个会话层协议!rnrn一直不太明白这句话的意思!~ rn HTTP的每个文件使用一条TCP!~ 即使是一个 img标签 或者什么的 也是一条TCP!~ rnrn那这个 单个TCP, 多个会话层 到底代表什么意思呢?rnrnrnrn[color=#0000FF]=====★===我===是===题===目===间===的===小===分===隔===符===★=====[/color]rnrn迅雷等下载工具是基于P2P的, P2P 应该是基于TCP和UDP的结合体;rnrn它是不是通过TCP握手索引和连接, 再通过UDP发送数据包呢?rnrnrnrn
关于TCP,http
我想知道一个问题,就顺序来说,客户端向服务器传送数据,首先发一个post包,然后开始传送数据,数据传完了以后,服务器才会给ok包, 而客户端从服务器上下载数据,是首先发一个get包,然后服务器给了ok包以后,在开始传数据,是不是这样, 不管层面,就只看顺序
关于HTTP协议的问题
我现在在做一个自动更新的功能:采用的是SOCKET+HTTP协议做的。现在有一个很郁闷的问题。rn就是当我下载的文件类型不一样的时候,发送请求后,服务响应请求收到的数据包不对,导至无法分析HTTP 头信息。rnrn代码:rn[code=C/C++]CString strSend,strHeader,strRange;rn rn int iStatus = 0,nRet;rn char szReadBuf[1024];rn DWORD dwContentLength,dwStatusCode;rn rn while (TRUE)rn rn if(m_pSocket.m_hSocket != NULL)rn m_pSocket.Close();rn m_pSocket.Create();rn m_pSocket.Connect(m_strServer, m_nPort);rn rn strSend = strVerb + m_strObject + " HTTP/1.1\r\n";rn strSend += "Host: " + m_strServer + "\r\n";rn strSend += "Accept: */*\r\n";rn strSend += "Pragma: no-cache\r\n"; rn strSend += "Cache-Control: no-cache\r\n";rn if( !m_strReferer.IsEmpty() )rn strSend += "Referer: " + m_strReferer + "\r\n";rn strSend += "Connection: close\r\n";rn strRange = "Range: bytes=100-\r\n";rn strSend += strRange;rn //必须要加一个空行,否则Http服务器将不会应答rn strSend += "\r\n";rn rn int ret = m_pSocket.Send(strSend.GetBuffer(0), strSend.GetLength());rn strSend.ReleaseBuffer();rn rn strHeader.Empty();rn while( TRUE )rn rn ZeroMemory(szReadBuf,1024);rn ret = m_pSocket.Receive(szReadBuf, 1023);rn rn if( szReadBuf[0] == '\0' ) // We have encountered "\r\n\r\n"rn break; rn strHeader += szReadBuf;rn if( iStatus == 0)rn strHeader += "\r\n";rn rn rn nRet = GetInfo(strHeader,dwContentLength,rn dwStatusCode,m_TimeLastModified);[/code]rnrn当下载文件为*.zip类型的时候。收到的头部信息为:rn[code=C/C++]HTTP/1.1 206 Partial ContentrnDate: Thu, 12 Aug 2010 07:02:18 GMTrnServer: Apache/2.2.9 (APMServ) PHP/5.2.6rnLast-Modified: Mon, 09 Aug 2010 03:12:36 GMTrnETag: "2000000001398-21b11f-48d5b63687063"rnAccept-Ranges: bytesrnContent-Length: 2207931rnContent-Range: bytes 100-2208030/2208031rnConnection: closernContent-Type: application/ziprnrn鄴?暸*"原E-?闞脍牯缥鐂_恩汪e 玟虣稆??O朒悙肦榀?鄸??5賥濵n埛e
关于http协议的问题
当客户端与web服务器建立了一个http连接之后,rn客户端发送一个GET请求去请求一个大小为1M的文件。rn然后读取了从服务器端返回的请求响应头信息之后,rn客户端立即断开了此次连接。rn请问这种情况下从服务器到客户端的出口流量是不是rn完整文件的大小?rnrn也就是说如果我的http连接在没有完全读取整个文件的rn情况下就断开连接的话,服务器端是否已经把整个文件rn都发出来了?
关于http协议
1.应用层协议的自定制,客户端将信息转化为字符串,(序列化),服务器端将字符串拆分转化为对象,(反序列化) 2.认识url键值对 键是一定的,值是变化的 urlencode:转义字符的转义(注意,不转义的话会出错) 抓包工具:fiddler 抓包 关于正向代理和反向代理(代理自己把东西屯好,有人需要了直接给他) HTTP:请求报文格式 方法:get,post url 版本号HTTP/1.0,1....
请问关于HTTP协议
我想把HTTPEXAMPLE中传输报文部分由异步改为单步,请问各位高手有没有改过的,麻烦告知一下,谢谢了
关于HTTP协议
HTTP协议 概念 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。 1999年6月公布的 RFC 2
关于http协议的问题?
为什么这个网页得不到,该怎么写呀?rnrnrnGET http://news.sina.com.cn HTTP/1.0rnAccept:text/html;rnrnHTTP/1.0 403 ForbiddenrnDate: Wed, 04 Dec 2002 09:31:51 GMTrnContent-Length: 257rnContent-Type: text/htmlrnServer: NetCache (NetApp/5.3R2)rnConnection: keep-alivernrnrn 403 Forbiddenrnrn Forbiddenrn rnYou were denied access because: rnAccess denied by access control list.rnrnrn rnrnrn
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件