socket 怎么获取 post 或者 get 过来的数据

2015-11-04 10:38:04 +08:00
 617450941
4917 次点击
所在节点    Python
6 条回复
Neveroldmilk
2015-11-04 11:20:36 +08:00
什么意思?监听端口,自己定义消息结构并解析啊。
initialdp
2015-11-04 13:20:31 +08:00
socket? 需要这么底层么?通过 socket 拿到的是 HTTP 码流,需要自己去解码,然后才能拿到 post 或者 get 的数据。
exgods
2015-11-04 16:14:08 +08:00
其实也不难,就是在 TCP 上传输 HTTP 协议。 HTTP 协议本来就是 TEXT
janxin
2015-11-04 19:18:26 +08:00
socket 叫 send 和 recv 吧…
a358003542
2015-11-04 19:40:00 +08:00
recv 完了一行行分析, HTTP 协议 get 协议较简单,就是
GET / HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
----
Post 与之类似,唯一的区别就是后面空一行之后还跟着 content 。

用 asyncio 的 aiohttp 模块直接处理 HTTP 协议,没必要弄这么底层的东西。就是你想自己写协议, asyncio 里面你也可以自己
class Test(Protocol):
what

总之 socket ,自己玩玩,真正实际不会用了。
xiaolee59
2015-11-05 10:38:23 +08:00
socket 是传输层的概念,GET 和 POST 是应用层 HTTP 协议的东西。
从监听 socket 成功 accept 一个连接后,会得到一个 client socket 的对象,用来和对应的远端 client 通信,直接去这个 client socket 里 recv 出字节流,根据 http 协议解析它就行, http 协议是纯文本协议,就是解析一段文本的操作,不难。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/233478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX