1.先实现一个简单的终端显示连接的功能,保证最小功能可以实现。
2.使用QtCreator制作一个UI用户界面。
3.实现UI界面本地的消息发送和接收。
4.将本地的接收替换成socket接收。
5.加入多线程和消息发送,实现既可以显示UI界面,发送消息和接收消息。
这里使用的是UDP连接方式。客户端很好理解,就是先给服务端发送一个消息,之后进入主循环等待服务端发送消息过来。
服务端先创建了一个用户列表,用来存储已经连接的用户。之后进入主循环,等待用户连接,如果用户是新用户就给它发送恭喜你已经加入python学习群,给其它已存在用户通知某某用户加入群聊,之后再将新用户添加进用户列表,如果不是新用户,那么就将某个用户发送过来的消息,一次给所有用户发一遍消息,实现消息同步的效果。
这个就不讲了,主要是工具的使用,按钮名字 pbtnsend,输入消息名字inputtext,消息显示名字 messagedisplay,左侧成员显示名字playerdisplay。
预览效果,使用了水平布局,整个也没具有自适应的效果。
先使用pyside2-uic将chat.ui转换成ui_chat.py。
初始化效果
实现本地发送效果
前面的效果没有出现UI界面,因为要接收消息,需要一个while循环,进去之后导致程序无法运行到后面,所以UI界面显示不出来,只能通过引入线程解决。将接收消息循环的代码放到一个线程里去,UI界面在主线程显示,效果可以实现,但是又出现了一个新问题,子线程不能将消息发送到主线程空间显示,后面通过pyside2的Signal来实现主线程和子线程通信。
(全文完)