怎么理解 Python 中的 socket 工作原理?

2016-10-20 15:32:20 +08:00
 ansheng

最近在整网络这块的东西,恰好弄到 socket 了,感觉理解的好笼统,一点那都不专业咋办?各位 V 友有没有对应文章推荐呢?

3568 次点击
所在节点    Python
31 条回复
julyclyde
2016-10-20 15:52:06 +08:00
你问的是 socket
还是 python 里的 socket
还是 python
ansheng
2016-10-20 15:52:54 +08:00
@julyclyde python 里的 socket
BOYPT
2016-10-20 15:54:11 +08:00
python 易用,但是不代表你不用学操作系统的东西,找本网络编程补补课吧。
julyclyde
2016-10-20 15:55:21 +08:00
@ansheng python 里的 socket 就是操作系统里的 socket 直接包了一层而已
ansheng
2016-10-20 15:58:12 +08:00
@julyclyde 那我是否可以理解他其实就在服务器上开了一扇门,然后客户端通过找到这扇门进行通讯,建立的连接是通过 tcp/udp 协力的,这其中是否牵扯到了 http 呢?
introom
2016-10-20 15:59:17 +08:00
ansheng
2016-10-20 15:59:55 +08:00
scream7
2016-10-20 16:02:40 +08:00
拿 python 学 socket 的话强烈推荐使用 ipython ,甚至可以帮你把 tcp 的各个状态理解清楚
ansheng
2016-10-20 16:03:34 +08:00
@scream7 我只想知道他的流程。。。。
9hills
2016-10-20 16:07:23 +08:00
Python 的 Socket 和 C 的 Socket 没啥区别,简单包了一层

建议先学习一本书叫《 Unix 高级环境编程》中的 socket 通信部分章节,这本书是所有*NIX 环境下,不管你用什么语言,都必须先学习的一本书。。。
zhangbohun
2016-10-20 16:15:42 +08:00
楼主需要补充一下计算机网络相关的姿势
lfzyx
2016-10-20 16:28:08 +08:00
python 中的 socket 只是用 python 实现的而已,跟其他语言的 socket 工作原理并没有什么不同
cxl008
2016-10-20 16:40:09 +08:00
这和 python 有什么关系 ,是你自己不理解 socket 。。。
zhicheng
2016-10-20 16:42:36 +08:00
不知道你说的是 socket 还是网络编程,下面两篇网络编程的文章推荐给你看一下。

用 Python 理解服务器模型(上) https://www.textarea.com/zhicheng/yong-python-lijie-fuwuqi-moxing-shang-566/
用 Python 理解服务器模型(下) https://www.textarea.com/zhicheng/yong-python-lijie-fuwuqi-moxing-xia-596/
ansheng
2016-10-20 16:47:39 +08:00
@zhicheng socket
zhicheng
2016-10-20 16:50:44 +08:00
@ansheng socket 就简单了,看我发的文章里第一章就够了。
meinqy
2016-10-20 16:51:57 +08:00
你可以这样理解: Python 通过调用系统底层 叫 socket 的 api 实现 和 客户机 的 tcp/udp 通信
ansheng
2016-10-20 16:52:04 +08:00
ansheng
2016-10-20 16:53:53 +08:00
@meinqy socket 其实就是对 tcp/ip 、 tcp/udp 的一个封装,也就是 python 提供了一个的网络打交道的模块把。
imn1
2016-10-20 17:04:24 +08:00
根据 5L 的回复,你先需要学习了解 BSD socket 原理, python 跟它是基本一样的,连 error no 都一样
注意同一版的 python ,在 linux 和 windows 上 socket 封装是不同的,返回状态和 error no 是跟随系统,如上面所说只是打包

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

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

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

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

© 2021 V2EX