文章目录
- 1、UI设计
- 2、功能设计
- 3、通信设计
- 4、最终效果
本文是接着之前的文章写的后续,因此如果有什么看不太明白的可以先看下前面的文章:TCP通信与UDP通信记录
1、UI设计
前面记录了UDP和TCP进行通信的基本原理和方式,本文就继续来进行一些应用的扩展,这里主要是基于TCP设计的聊天器页面,这里页面设计我还是使用PYQT的方式,上手比较方便,关于PYQT,我也有一篇专栏专门进行介绍的,可以自行查看:PYQT开发笔记
本文这里只是做个展示,当然不会太完美,最终的整体框架如下所示,主要是分为服务器还有客户端两块,上下进行布局,另外都设置了发送端和接收端,主要还是根据输入的IP地址和端口号进行连接
创建我们的工程
整体页面如下:
下面是用到的一些控件,也基本都是一些常见的控件:
2、功能设计
下面就开始功能方面了,功能上主要是基于socket进行通信嘛,实现一个类似聊天器的效果,基于这个我们其实就可以做很多东西了,比如远程遥控器,文件传输系统等等有意思的东西了。
因此大概流程就是:
- 选择是进行服务器模式还是客户端模式,当然实际上同时选择这两个模式也是没什么问题的,因为本身就可以多线程数据传输的。
- 输入IP地址和端口号,根据IP地址和端口号进行连接
- 数据发送
- 接收另外一段回传的信息
3、通信设计
下面就开始看代码了,我们用pyuic就可以将ui文件生成我们需要的py文件了
先看下服务器部分的设计吧,首先是创建一个服务器连接
服务器线程中一直在进行数据收发的处理
通过按钮将事先放在文本中的信息发送出去
客户端设计如下,同样也是客户端连接后创建客户端线程,哦对了这里需要提一下就是其实这个过程很有可能因为各种占线或者填错了什么东西导致连接失败,所以最好用python里面的try来进行,这样起码不至于闪退。
下面是客户端的线程函数
客户端数据发送
4、最终效果
经过上面的设置我们就可以开始进行通信了,整个过程其实还是比较简单的,我们先尝试用外部的工具来和他进行通信,首先运行我们的程序:
打开VOFA,设置为服务器模式,和我们的程序进行连接,绑定好IP地址后进行连接,可以看到下面已经连接成功了
下面进行数据收发测试,可以看到完全OK的
下面修改为客户端模式在来进行测试:
还是进行收发测试,可以看到是完全没问题的
下面在进行自己的收发测试,两边同时进行连接
服务器发送数据到客户端OK
客户端发送数据返回服务器也是OK的