因此,作为我的项目(2D 多人纸牌游戏)的一部分,我已经弄清楚如何在线托管和运行服务器脚本。我的计划是让两个单独的 kivy 客户端连接到服务器(这只是一个带有命令的脚本)。
但是我对操作顺序有些困惑,因为我think客户端连接可能与消息循环发生冲突,所以我想知道是否有人可以基本上告诉我应该做什么:
我将使用它作为我的服务器脚本:
import socket
serversocket = socket.socket()
host = 'INSERTIPHERE'
port = PORTHERE
serversocket.bind(('', port))
serversocket.listen(1)
while True:
clientsocket,addr = serversocket.accept()
print("got a connection from %s" % str(addr))
msg = 'Thank you for connecting' + "\r\n"
clientsocket.send(msg.encode('ascii'))
clientsocket.close()
这是我的客户端连接功能
def Main():
host = 'INSERTIPHERE'
port = PORTHERE
mySocket = socket.socket()
mySocket.connect((host, port))
message = input(' -> ')
while message != 'q':
mySocket.send(message.encode())
data = mySocket.recv(1024).decode()
print('Received from server: ' + data)
message = input(' -> ')
mySocket.close()
注意:我知道服务器和客户端在功能上并不完全一致,但只要我现在至少可以确认连接,我就可以从那里开始工作。
我基本上想知道如何将此代码放入一个简单的 kivy 应用程序中,如下所示:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class BoxWidget(BoxLayout):
pass
class BoxApp(App):
def build(self):
return BoxWidget()
if __name__ == '__main__':
BoxApp().run()
我最好的猜测是您想要:
- 打开客户端之前建立连接
- 当您运行客户端实例时(即 BoxApp(server).run()?),将服务器连接传递到主小部件(在本例中为 Box 部件)
- 在 BoxWidget 的消息循环函数中使用该连接
我还了解到 Kivy 已经内置了 Twisted 解决方案,但我在 python 2-3 差异方面遇到了麻烦。
感谢您的阅读。
只是为了澄清:我现在想做的就是打开一个空白窗口,并向命令行发送一条确认消息(或者在窗口中显示标签失败)。