
我搞这个 socket 编程,完全是被逼的。 我为啥要学 Socket 编程? 去年那会儿,我想给家里的那套破旧的监控系统做个小升级。系统是老式的,卡得很,我想绕开它那...
我搞这个 socket 编程,完全是被逼的。
去年那会儿,我想给家里的那套破旧的监控系统做个小升级。系统是老式的,卡得很,我想绕开它那个原厂的远程登录,直接搞一个简单的程序,让公司的电脑能直接看到家里摄像头传过来的画面。找了一圈,发现所有现成的方案都要经过第三方服务器,要注册,要交钱,烦得要死。
我就寻思,既然是两台电脑“说话”,那肯定绕不过网络这一关。一搜“两台电脑通信”,蹦出来最多的就是“Socket 编程”这四个字。
我这人脾气急,理论看两眼就头晕,直接上手干。我选了 Python,图它简单易懂,教程多。
我立马就开始了我的第一次尝试——搭建一个最简陋的服务器。整个过程,我就把它当成是开了一个电话亭:

我先导入了那个 `socket` 模块,敲下 `s = *()`。这就是我造出来的第一台“电话机”,虽然它啥也没干,但至少它存在了。那感觉,特别像搭积木搭出了第一块底座。
电话机造好了,得有个号码别人才能找到我。我就用 `*(('0.0.0.0', 8888))` 把一个 IP 和端口给它绑上去。这个 8888 就是我的电话号码。我当时心想,这个 IP 写 '0.0.0.0' 就是让外面所有人都能找到的意思,这个得记牢!
号码有了,得让电话机“支棱”起来,等着铃声响。我就用 `*()` 让它开始“听着”。然后,最重要的一个动作来了—— `conn, addr = *()`。我理解这就是“电话响了,我赶紧拿起听筒接通”。这个 `conn` 就是真正的“通话线路”。

服务器跑起来了,没报错,挺顺利。接着我搞客户端。客户端就是“打电话”的那一方:
客户端也得先造个电话机。然后就是关键的一步:`*(('127.0.0.1', 8888))`。我当时想试试,就把 IP 地址写成了我的外网 IP。结果,跑了五六次,次次都报错,说“连接失败”。我差点没把电脑砸了!
来回看教程,才发现我犯了个大错。我在自己电脑上测试,应该用本地的“家”地址,也就是那个所谓的 `127.0.0.1`。我把 IP 地址一改,啪的一下,通了!屏幕上显示“连接成功”那会儿,我激动得差点跳起来。
通了之后,就是发和收了。这就简单了,客户端 `*(b'Hello')`,服务器 `*(1024)`。我先是发了个“你好”,服务器打印出来了。我让服务器收到后再发一个“收到”回去。两边的程序看到数据在来回跑动,那种成就感,简直了!这就是数据的来回互动,也就是那个传说中的“核心”。
经过这回折腾,我彻底明白了,学 socket 编程,不用去钻牛角尖。核心就是做好“电话”的六个动作:造电话机、绑地址、听着、接电话、拨号、聊天。
把它当成两个人在打电话,多跑几次,自然就会了。我现在那个看家的小程序已经能用了,虽然代码丑,功能也简单,但它是我亲手“打通”的,贼好用!实践出真知,各位,直接去敲代码!