从 socket 到 http 该怎样学习

著名的 tcp/ip 协议指南,可以弄一套来读。
■网友
用socket写一个http服务器,这东西是实质,你可以用python,java,c,c++做这件事情,你还能玩出各种花样。import sys import BaseHTTPServer from SimpleHTTPServer import SimpleHTTPRequestHandler HandlerClass = SimpleHTTPRequestHandler ServerClass = BaseHTTPServer.HTTPServer Protocol = "HTTP/1.0" if sys.argv: port = int(sys.argv) else: port = 8000 server_address = (\u0026#39;127.0.0.1\u0026#39;, port) HandlerClass.protocol_version = Protocol httpd = ServerClass(server_address, HandlerClass) sa = httpd.socket.getsockname() print "Serving HTTP on", sa, "port", sa, "..." httpd.serve_forever() 运行python -m SimpleHTTPServer 8080
■网友
http推荐这本HTTP权威指南 (豆瓣)O\u0026#39;Reilly 出品,值得信赖。图文并茂,易读易懂,翻译不错,涵盖内容也很全面。
■网友
socket和http没有多少关系,想深入就直接深入呗。
■网友
从 socket 到 http 该怎样学习
【从 socket 到 http 该怎样学习】
你需要这个
■网友
希望你会一点python,如果不会也没关系,你至少会编程对吧?那么这些代码你应该看得懂,我每一行都添加了注释。import socket#import socket包if __name__ == \u0026#39;__main__\u0026#39;:#作为单独运行时这段代码生效 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#实例化一个socket s.connect((\u0026#39;www.baidu.com\u0026#39;, 80))#连接百度的80端口 s.send(b\u0026#39;GET / HTTP/1.1\\r\Host: www.baidu.com\\r\Connection: close\\r\\\r\\u0026#39;)#发送一段头信息 buffer = #用来接收返回字段的buffer while True:#循环接收 d = s.recv(1024)# 每次最多接收1k字节: if d: buffer.append(d) else: break data = https://www.zhihu.com/api/v4/questions/31043510/b/u0026#39;/u0026#39;.join(buffer)#得到返回的字符串 print(data)#打印返回的字符串我用的是python3.4我得到的返回字符串是b\u0026#39;HTTP/1.1 200 OK\\r\Date: Mon, 08 Jun 2015 01:15:06 GMT\\r\Content-Type: text/html\\r\Content-Length: 14613\\r\Last-Modified: Wed, 03 Sep 2014 02:48:32 GMT\\r\Connection: Close\\r\Vary: Accept-Encoding\\r\Set-Cookie: BAIDUID=04D7DDE20BECF76F44CEA11006E7F4C6:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com\\r\Set-Cookie: BIDUPSID=04D7DDE20BECF76F44CEA11006E7F4C6; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com\\r\Set-Cookie: PSTM=1433726106; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com\\r\Set-Cookie: BDSVRTM=0; path=/\\r\P3P: CP=" OTI DSP COR IVA OUR IND COM "\\r\Server: BWS/1.1\\r\X-UA-Compatible: IE=Edge,chrome=1\\r\Pragma: no-cache\\r\Cache-control: no-cache\\r\BDPAGETYPE: 1\\r\BDQID: 0xe602c2b9000b55d6\\r\BDUSERID: 0\\r\Accept-Ranges: bytes\\r\\\r\\u0026lt;!DOCTYPE html\u0026gt;HTML部分省略...\u0026lt;/html\u0026gt;\u0026#39;


推荐阅读