pyqt tcp通信_PyQt5系列教程(72):局域网群聊小工具plus3

今天我们一起来学习服务器端的代码。

程序结构

8个主要函数。

核心代码解析

为节约篇幅一些简单的代码就不解释了。

def initServer(self):

self.tcpPort = 7788

self.tcpServer = QTcpServer(self)

self.clientConnection = QTcpSocket(self)

self.tcpServer.newConnection.connect(self.sendMessage)

self.serverStatuslabel.setText("请选择要传送的文件")

self.progressBar.reset()

self.serverOpenBtn.setEnabled(True)

self.serverSendBtn.setEnabled(False)

self.tcpServer.close()

新增的两个类:QTcpServer、QTcpSocket我们先来了解一下。QTcpServer类提供基于TCP的服务器。

此类可以接受传入的TCP连接。您可以指定端口或让QTcpServer自动选择一个。您可以收听特定地址或所有机器地址。

调用listen()让服务器侦听传入的连接。每次客户端连接到服务器时,都会发出newConnection()信号。

调用nextPendingConnection()以接受挂起的连接作为已连接的QTcpSocket。该函数返回一个指向QAbstractSocket.ConnectedState中QTcpSocket的指针,您可以使用该指针与客户端进行通信。

如果发生错误,serverError()将返回错误类型,并且可以调用errorString()以获取对所发生情况的可读描述。

监听连接时,服务器正在侦听的地址和端口可用作serverAddress()和serverPort()。

调用close()会使QTcpServer停止侦听传入连接。

尽管QTcpServer主要设计用于事件循环,但可以在没有事件循环的情况下使用它。在这种情况下,您必须使用waitForNewConnection(),它会阻塞,直到连接可用或超时到期。

详见:QTcpServer Class​doc.qt.ioQTcpSocket类提供TCP套接字。

TCP(传输控制协议)是一种可靠的,面向流的,面向连接的传输协议。 它特别适用于连续传输数据。

QTcpSocket是QAbstractSocket的子类,允许您建立TCP连接并传输数据流。

详见:QTcpSocket Class​doc.qt.io

self.tcpPort = 7788

self.tcpServer = QTcpServer(self)

self.clientConnection = QTcpSocket(self)

self.tcpServer.newConnection.connect(self.sendMessage)QTcpSocket Classself.tcpPort = 7788

self.tcpServer = QTcpServer(self)

self.clientConnection = QTcpSocket(self)

self.tcpServer.newConnection.connect(self.sendMessage)

这里我指定了TCP端口为7788,你可以随意改,只要不冲突就行了。

self.tcpServer = QTcpServer(self)

self.clientConnection = QTcpSocket(self)

self.tcpServer.newConnection.connect(self.sendMessage)

我们创建一个Tcp服务器和一个Tcp套接字。当有新的连接来的时候发出newConnection信号,我们连接到sendMessage()函数。

self.serverStatuslabel.setText("请选择要传送的文件")

self.progressBar.reset()

self.serverOpenBtn.setEnabled(True)

self.serverSendBtn.setEnabled(False)

self.tcpServer.close()

显示我们开始创建的对话框,打开按钮是可用的,发送按钮是不可用的,进度条复位,先关闭服务器。

def sendMessage(self):

self.serverSendBtn.set

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值