项目实战:《怎么用Python 做一款带用户界面的本地通讯软件》第二节:简单网络通讯模型。

本文介绍了如何在Python中构建一个带有用户界面的本地通讯软件,通过添加网络通信模块实现客户端和服务端的交互。客户端使用TCP套接字与服务端通讯,服务端通过多进程处理客户端请求,包括登录和注册功能。下一篇文章将讨论聊天界面的创建。
摘要由CSDN通过智能技术生成

前言

上一期,用pyqt5 写了用户登录及注册界面:
用Python做一款带用户界面本地通讯桌面软件 (一:用户登录与注册)
并且用本地文件操作,模拟了用户登录和注册的业务逻辑,本期主要介绍将用户登录和注册加上网络通信模块。

1、模块分析

这里我们主要分以下2个模块:
1、客户端 Client 模块:主要存放用户操作界面代码,负责用户操作,接收服务端返回数据,呈现给客户。
2、服务端 Service 模块:主要存放服务端代码,负责接收处理客户请求,并返回数据给客户端。

其他的文件分析:
Client 模块下的temp文件夹:保存用户基本的资料数据,如聊天记录等。
data 文件夹:因没用数据库,所以data文件夹可以看做是服务端数据保存路径。
image文件夹:保存客户端界面用到的图片。
项目目录

2、客户端功能及代码:

本次客户端相比于上期内容基本上没有多大变化,只是在上期基础上引入了负责与服务端通讯的client.py文件,修改了do_login用户登录方法及注册界面的register_func用户注册方法。

2.1 client.py

与服务端通讯:

'''
客户端通讯
'''
from socket import *

# 获取服务器地址:
with open('setting.txt','r') as f:
    data = f.readlines()
    address = (data[0].strip(),int(data[1]))

class Client(object):
    def __init__(self):
        # 创建套接字对象
        self.sock_fd = socket(AF_INET,SOCK_STREAM)
        # 连接服务器
        self.sock_fd.connect(address)

    # 发送请求,并接收服务端返回数据
    def send_receive(self,message):
        self.sock_fd.send(message.encode())
        data = self.sock_fd.recv(2048)
        return data.decode()

这里使用TCP套接字来进行通讯。

# 获取服务器地址:
with open('setting.txt','r') as f:
    data = f.readlines()
    address = (data[0].strip(),int(data[1]))

setting 文件作为客户端通讯地址文件,方便后期客户端在其他地址登录时修改。

以下为setting.txt文件内容:

127.0.0.1
8888

客户端通讯模块的引入:

from client import Client

# 用户登录页面
class LoginPage(QWidget):
    '''用户注册,登录窗口'''
    # 创建客户端以进行连接
    try:
        client = Client()
    except:
        pass
2.2 LoginPage类中do_login方法改写
	# 登录方法
    # 在登录方法中,检查用户设置的登录状态
    def do_login(self):
        # 获取用户输入的用户名及密码
        name,password = self.name_line.text(),self.password_line.text(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值