Unity 与 Python 实现TCP通讯

匿名 (未验证) 提交于 2019-12-02 22:54:36

前言:

Server:
#PyQT5
from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtNetwork import * import string import copy   class Server():        def __init__(self):            self.tcpServer = None         self.networkSession = None                self.clientNum = 0             self.strMsg = 'nihaonihaonihao'         self.shutFlag =False      def buildServer(self):      #初始化Server          manager = QNetworkConfigurationManager()          if manager.capabilities() & QNetworkConfigurationManager.NetworkSessionRequired:             settings = QSettings(QSettings.UserScope, 'QtProject')             settings.beginGroup('QtNetwork')             id = settings.value('DefaultNetworkConfiguration', '')             settings.endGroup()                config = manager.configurationFromIdentifier(id)             if config.state() & QNetworkConfiguration.Discovered == 0:                 config = manager.defaultConfiguration()                self.networkSession = QNetworkSession(config, self)             self.networkSession.opened.connect(self.sessionOpened)                self.statusLabel.setText("Opening network session.")             self.networkSession.open()         else:             self.sessionOpened()            self.tcpServer.newConnection.connect(self.ClientInit)   #有新的client就链接到新client上进行通讯      def sessionOpened(self):#这里初始的是本机ip          if self.networkSession is not None:             config = self.networkSession.configuration()                if config.type() == QNetworkConfiguration.UserChoice:                 id = self.networkSession.sessionProperty('UserChoiceConfiguration')             else:                 id = config.identifier()                settings = QSettings(QSettings.UserScope, 'QtProject')             settings.beginGroup('QtNetwork')             settings.setValue('DefaultNetworkConfiguration', id)             settings.endGroup();            self.tcpServer = QTcpServer()         self.tcpServer.listen(QHostAddress.Any,50213)          if self.tcpServer.isListening() == False:             QMessageBox.critical(self, "Fortune Server",                     "Unable to start the server: %s." % self.tcpServer.errorString())             self.close()             return            for ipAddress in QNetworkInterface.allAddresses():             if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0:                 break         else:             ipAddress = QHostAddress(QHostAddress.LocalHost)          print(ipAddress.toString())         print(self.tcpServer.serverPort())          self.ipAddress =ipAddress.toString()         self.ipPort = self.tcpServer.serverPort()              def ClientInit(self):#有新的client就链接新的client并和其通讯          if self.clientNum ==1:              self.serverShutCurrentClient()             print("Sudden client builds the connection")                   if self.clientNum==0:              print("New client builds the connection")             self.clientConnection = self.tcpServer.nextPendingConnection()             self.clientConnection.disconnected.connect(self.serverShutCurrentClient)             self.clientConnection.readyRead.connect(self.readData)             self.clientNum += 1             self.shutFlag =True      def sendData(self):#简单的发送string          if self.clientNum == 1:              block = QByteArray()                     block.append(self.strMsg)                      self.clientConnection.write(block)                   def readData(self):#简单的读取string,并除去byte标符          tempdata = self.clientConnection.read(1024)         tempstr = str(tempdata)                 tempstr = tempstr.replace("b'",'')         tempstr = tempstr.replace("'",'')          print(tempstr)       def serverShutCurrentClient(self):#          self.clientConnection.disconnectFromHost()         self.clientNum =0         print("Disconnect with the last client")              def serverShutDown(self):         if self.shutFlag :             self.clientConnection.close()         print("The Server is shut down!")

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!