问题是,在服务器端使用PYQT5 Gui时,我无法将命令发送到远程控制的设备(主机上的代理),并且无法将结果(信息)与客户端标识一起发送回服务器。客户将没有gui。我将不得不选择并根据客户端标识或会话来选择哪些客户端获得特定命令。我正在使用Pyqt5设计器,并且我的python代码与主应用程序分离了。
这种情况是我有一个pyqt5网络安全事件处理框架,该框架启动服务器,然后侦听连接。然后,我有一个python代理(client.py)连接回服务器。连接发生了,我目前只能向客户端发送一个命令(一个变量),并将结果传输回框架。我无法根据客户端ID或会话向多个客户端发送多个命令。
最大的问题之一是我的服务器GUI上有一个工作终端,并且无法基于会话将QLineEdit文本传输到客户端。如果我添加了python input(->),那么一切都很好,但是用户将无法使用Gui,而我希望用户使用Gui。
在研究解决方案时,我的代码示例位于下面
https://github.com/jinverar/multiconn-client-server
并且github上的代码示例基于以下python教程
https://realpython.com/python-sockets/#application-client-and-server
下面列出了对我帮助最大的热门链接。
PyQt5: Sending and receiving messages between client and server
https://github.com/jinverar/TCP-ReverseShell
Server-client connection in PyQt
http://www.mranuran.com/blog/2017/08/04/creating-graphical-chat-application-using-pyqt-and-socket/
下面列出了一些有助于我到目前为止的其他链接。
https://www.riverbankcomputing.com/static/Docs/PyQt5/gotchas.html
https://het.as.utexas.edu/HET/Software/PyQt/qabstractsocket.html#setSocketDescriptor
http://www.mranuran.com/blog/2017/08/04/creating-graphical-chat-application-using-pyqt-and-socket/
https://www.zeolearn.com/magazine/getting-started-guis-with-python-pyqt-qthread-class
建议继续执行以下步骤,这是可能的解决方案。
1)而不是高级GUI,而是构建一个非常简单的带有按钮的GUI-单击该按钮会向服务器发送消息-然后多次单击该按钮,也许为每个按钮发送一个计数器值通过这种方式单击到服务器,即可测试持续的连接通信。
2)然后在服务器上执行类似的操作,看看服务器是否可以将消息发送到您的客户端接收功能,并且在两种情况下都只打印您收到的消息-这应该可以帮助您解决这些问题,然后就可以构建从那里。
以下几点是附加指导。
1)服务器端应在服务器上作为服务运行-没有GUI,最初只是将输出发送到普通控制台窗口
2)首先,您要使用带有Client-Communicator的简单GUI来确保可以向服务器发送多条消息,并且它可以接收所有消息
3)然后,构建一个与服务程序对话的简单服务器GUI(或者,如果不确定如何进行集成,则可以将其集成),然后单击几次按钮以确保您正在与客户端对话好吧
一旦您准备好了,就应该对通信器进行测试并正常工作,那么我们只需插入更强大的功能和更完整的GUI
然后 1)创建Communicator即服务
2)将API方面添加到Communicator
3)创建GUI以接受命令
4)让GUI通过对您创建的API的调用将信息发送到Communicator。
做到这一点
1)如果尚未实现服务,请按一个按钮来实现它
2)通过通话启动/停止服务
3)从该服务获取数据(或者在您的情况下,从该服务发送数据并从中接收数据)