python socket 的使用 - 千月的python linux 系统管理指南学习笔记(20)

本文介绍了如何使用Python的socket模块连接到HTTP服务器并获取响应,是千月的Python Linux系统管理指南学习笔记的第20篇。
摘要由CSDN通过智能技术生成
Socket的使用
我们进入到网络编程方面的学习。
当然之后的几章会对网络编程做简要的说明与演示。因为涉及到网络,所以环境也有些要求,比如web服务。2台虚拟机的交互。虽然很多东西本机也可以实现,毕竟2台机器的交互看的更直观些。

import socket
1、简单的用socket与http服务器交互

开始第一个函数 socket 的学习,我们连接服务器的 http 服务得到其响应。


如果在执行 connect() 过程中出现了如下报错,则需要清除本地和对端防火墙里的条目,或者增加允许。

首先我们在代码里创建了一个 socket 对象。并且通过 connect() 函数输入IP和端口号进行连接。接下来我们使用 send() 函数向服务器端发送一个请求。然后使用 recv(150) 接收服务器端发回的前150个字节。最后 close() 关闭连接。

2、用 socket 进行 TCP 端口检查
我们继续看另一个有点实际作用的代码,这个代码可以检查远端 http 服务的状态。我们尽量使其可以作为一个命令般在工作中使用,因此引用了 OptionParser() 函数来进行命令行参数的编写。
来看代码。

我们定义了一个 check_server() 的函数,作为判断的主体。这个函数我们使用了 try...except... 结构,将错误(socket.error) 收集到 变量 e 里面。其他的没什么可说的。之后在程序主体里我们调用了parser来进行标准命令行参数的编写。有点Linux基础的朋友很容易看懂。
使用 (options, args) = parser.parse_args() 来解析程序的命令行。
最后执行输出,结果如下。

如果要返回服务器状态,也可以直接 send() 用获得的返回值判定服务器状态。不赘述了。

3、用 socket 进行网络通信
我们不能仅局限与和 http 服务器交互,可以尝试编写服务器端的程序。进行2台机器之间消息的传递。
服务端:

我们使用 bind()来将 socket 绑定到指定的地址。listen() 决定了最多有几个客户可以连接到服务器端。之后进行一个 while 的无限循环。而在 s.accept() 中,我们返回两个对象,一个是新的 socket对象,这里我们命名为 connection 。而另一个是一个含有2个元素的元组,分别是 IP地址和端口号,我们把他写入 addr 并在后面输出。 settimeout(50) 表示在50秒没有任何数据就触发timeout异常。后面会用 except 处理 timeout 异常。其他的没什么看都。都能看懂吧。

客户端在 Python 中执行

服务端显示

这个例子可以扩展,比如即时聊天软件。或者一个持续的消息传递。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值