Python 爬阶梯 | Python 操作socket 之聊天室客户端的实现
今天我们来实现聊天室的客户端,一般来说,客户端的操作越傻瓜式越好,我们主要实现这样的功能:
- 用户可以只管的运行一个聊天室软件
- 可以在里面看到所有聊天室用户的消息
- 自己可以编辑消息进行发送
我们可以使用 tkinter 这个库来写一些 Python 的 GUI ,也就是客户端的聊天界面,首先导入 tk 库,然后定义一下标题:
运行一下就是这样的:
创建聊天界面布局
创建面板
接下来我们来创建聊天界面的布局,先定义三个面板,分别是用来看消息的面板,输入消息的面板,以及发送消息的面板:
创建文本和按钮
消息面板和发送消息面板都是 Text , 而发送的操作需要用到 Button:
容器位置排放
消息窗口位于第 1 行,消息输入窗口位于第 2 行,发送按钮位于第三行:
固定容器大小
可以使用 grid_propagate 来固定各个面板的大小:
文本按钮添加到容器中
最后将刚刚定义的 text 和 Button 弄进来:
运行一下:
这样我们的聊天界面就做好了,接下来需要绑定一下事件,也就是说,当我们点击发送按钮的时候,应该要触发一个事件,我们可以通过这个时间将输入框中的内容发送给 socket 服务端。
发送事件绑定
我们可以在刚刚定义的 Button 中使用 command 参数来绑定方法,从而实现点击发送按钮时候的触发:
本文隐藏内容 登陆 后才可以浏览
可以接收到消息了,我们让他们聊起来看看:
ok,这样聊天室的主要功能就实现啦,当然还有一些小地方可以优化,这两篇主要还是跟你说说 socket 的应用,以上涉及的代码会传到我们的 GitHub 中去,你可以拿去练练手。
socket能实现两台不同的电脑进行通信吗?
可以。
我拿websocket写过一个类似于百度网盘一样的东西,服务器端拆分文件传输,速度最大才100k 百度好久发现这个就不适合传文件,就适合聊天。。。
是的,socket 通信主要用于实时通信,文件传输可以用文件传输的协议。