Python学习笔记——socket通信

Python socket编程实践与进阶
本文介绍了Python的socket通信基础知识,并通过三个案例逐步讲解,从原生socket编程到使用socketserver库实现更复杂的操作,最后展示了如何处理多个客户端连接。适合初学者巩固和深入理解socket通信。

建议大家先百度搜索下了解下socket通信和http通信的区别。
我是刚百度过。毕竟学校学的东西早就忘光了。
忘了不可怕,可怕的是忘了却以为自己什么都知道。(很明显,我以前就是这种人 ← 笑哭)

案例一

from socket import *
# IP
myhost = ''
# 端口号
myport = 8080
# 新建socket
sockobj = socket(AF_INET,SOCK_STREAM)
# 绑定地址
sockobj.bind((myhost,myport))
# 设置最大连接数
sockobj.listen(128)
while True:
    # 接收数据信息,地址信息
    connection ,address = sockobj.accept()
    # 打印地址信息
    print("class of address:"+str(type(address)))
    print( "connect by "+str(address))
    while True:
        # 从数据信息中取1024个字节
        data = connection.recv(1024)
        # 如果data为空,结束连接
        if not data:
            break
        # 打印data类型
        print("class of data:"+str(type(data)))
        # 回传信息
        rstr =bytes("echo:",encoding='utf-8')+ data
        connection.send(rstr)
    # 关闭连接
    connection.close()

代码相对简单。这是利用原生的socket进行编程的。
结果如下:
这里写图片描述

如果用的是linux系统,直接nc 127.0.0.1 8080 就连接上了,因为我用的是windows,专门下载的nc工具,如果你也是Windows的话,请在文章最后下载压缩包,那里有nc工具和相关代码。

记住新建socket → 绑定地址 → 设置连接数,上面的代码就没有问题了。可以考虑多默写几遍。理解下其中深意。


当然如果你觉得这已经是最简单的了,那你就错了。

接下来我们引入python专门用于socket编程的库来试试。

案例二

这里写图片描述

看看代码,这里有三个地方需要注意下,
1、socketserver 这是python 3.x的,如果你用的是2.x 需要改为SocketServer
2、在返回值的时候,我为了好看加了个回车也就是‘\n’但是需要把转成byte类型才能和data.upper()合到一起回传。
3、一定记住port要int类型,我写的时候写成了‘8080’一只报错,我一脸懵逼都不知道哪里错了。这是错误提示:an integer is required (got type str)

怎么样,引入Python的库,你专注的工作重点就从构造socket转向写自己需要的业务了吧?是不是省了很多事儿?


案例三

以上两个例子都只支持一个客户端,可实际情况下,肯定不止一个啊?

只要把案例二稍微修改下。就搞定了~

这里写图片描述

StreamRequestHandler 是 BaseRequestHandler的一个子类,可以以文件流形式操作来接收和发送byte数据。

这时候我们就可以利用它同时与多个客户端交互了。
结果如下:
这里写图片描述

如上,Python代码少不少?

了解下,为后来自己搭建后台服务器打个基础。
能明白多少就明白多少,大不了自己多敲几遍。

代码和工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值