首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP通信:发送响应

TCP通信:发送响应
EN

Stack Overflow用户
提问于 2015-02-26 04:56:06
回答 1查看 1.9K关注 0票数 1

我对套接字编程和TCP通信很陌生,我正在开发一个应用程序,该应用程序应该接收来自访问服务器但没有互联网连接的计算机的请求(网站urls),然后它应该将网站发送到客户端作为响应。到目前为止,我已经能够成功地侦听请求,但是当我试图发送响应时,浏览器会挂起。

代码语言:javascript
复制
            IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
            TcpListener listener = new TcpListener(ipAddress, 500);
            listener.Start();
            while (true)
            {
                Socket client = listener.AcceptSocket();
                Console.WriteLine("Connection accepted.");
                var childSocketThread = new Thread(() =>
                {
                    byte[] data = new byte[100];
                    int size = client.Receive(data);
                    Console.WriteLine("Recieved data: ");
                    for (int i = 0; i < size; i++)
                        Console.Write(Convert.ToChar(data[i]));
                    // Reading the website in bytes using WebCLient
                    client.Send(RESPONSE) // Here I call the send
                    client.Close();
                });
                childSocketThread.Start();
            }

            listener.Stop();

我到底做错了什么,我如何解决这个问题(将响应发送回客户端)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 05:53:40

如果您想要编写HTTP代理,则必须遵循HTTP规范中对代理的所有要求。例如:

代理服务器必须与它所连接的客户端和源服务器(或其他代理服务器)分别发出持久连接的信号。每个持久连接只适用于一个传输链路。

以及:

代理服务器不能与HTTP/1.0客户端建立HTTP/1.1持久连接(有关许多HTTP/1.0客户端实现的“保持活动”报头问题的信息和讨论,请参阅RFC 2068 33 )。

以及:

  • 如果代理接收到包含带有“100-继续”期望的Expect请求头字段的请求,并且代理知道下一跳服务器符合HTTP/1.1或更高版本,或者不知道下一跳服务器的HTTP版本,则必须转发请求,包括Expect报头字段。
  • 如果代理知道下一跳服务器的版本是HTTP/1.0或更低版本,它就不能转发请求,并且必须以417 (预期失败)状态进行响应。
  • 代理应该维护一个缓存,记录从最近引用的下一跳服务器接收的HTTP版本号。
  • 如果从HTTP/1.0 (或更早版本)客户端接收到请求消息,并且没有包含带有“100 -继续”期望的Expect请求头字段,则代理不能转发100(继续)响应。这一要求超越了转发1xx响应的一般规则(见10.1节)。

HTTP代理是一个极其复杂的庞然大物,对于那些没有编写网络代码经验的人来说,这可能是最糟糕的选择。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28734726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档