0
我做了一个应用程序与kivy的工作,发送“名称”的服务器(与套接字),服务器插入“名称”的数据库,并发回“名称“到客户端(应用程序)和客户端打印它。kivy-recv线插座不工作
我没有得到任何错误,但该应用程序无法正常工作。它不开放。
我的客户(应用程序):
# kivy.require("1.8.0")
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.widget import Widget
from kivy.uix.textinput import TextInput
from kivy.graphics import Line
from kivy.uix.button import Button
import socket
Builder.load_string("""
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
<MenuScreen>:
BoxLayout:
Button:
text: 'Sign Up'
on_press:
root.manager.transition.direction = 'left'
root.manager.current = 'settings'
Button:
text: 'Login'
on_press:
root.manager.transition.direction = 'left'
root.manager.current = 'settings'
<Searchi>:
BoxLayout:
Button:
text: 'send massage'
font_size: '20sp'
size_hint: (0.4,0.111)
pos_hint: {'y': 0,'x':0.6}
on_press:
root.manager.transition.direction = 'right'
root.manager.current = 'settings'
<SettingsScreen>:
BoxLayout:
FloatLayout:
LoginScreen
Button:
font_size: '20sp'
size_hint: (0.4,0.111)
pos_hint: {'y': 0,'x':0.6}
text: 'Back to menu'
on_press:
root.manager.transition.direction = 'right'
root.manager.current = 'menu'
""")
class LoginScreen(GridLayout):
def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.cols = 2
self.my_socket = socket.socket()
#host = socket.gethostname()
#port = 8585
self.my_socket.connect(('127.0.0.1', 8081))
self.add_widget(Label(text='username'))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
self.add_widget(Label(text='Password'))
self.password = TextInput(multiline=False, password=True)
self.add_widget(self.password)
self.submit_button = Button(text='sumbit',size_hint=(.5,
.25),font_size=20)
self.submit_button.bind(on_press=self.submit_username)
self.add_widget(self.submit_button)
def submit_username(self, *args):
# Make sure to validate the input before submitting to the server
self.my_socket.send(self.username.text.encode('utf-8'))
sm.current = 'searchi'
sm.transition.direction = 'left'
# Declare both screens
class MenuScreen(Screen):
pass
class SettingsScreen(Screen):
pass
class Searchi(Screen):
def __init__(self, **kwargs):
super(Searchi, self).__init__(**kwargs)
self.my_socket = socket.socket()
self.my_socket.connect(('127.0.0.1', 8081))
self.msg=self.my_socket.recv(1024)
self.name=self.msg.decode('utf-8')
self.add_widget(Label(text="hello"+self.name,size_hint=(1,
1.7),font_size=20))
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(Searchi(name='searchi'))
sm.add_widget(SettingsScreen(name='settings'))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
我的服务器:
import socket
import db # import my db
import time
server_socket = socket.socket()
server_socket.bind(('127.0.0.1',8081))
server_socket.listen(5)
(client_socket, client_address) = server_socket.accept()
while(True):
client_username = client_socket.recv(1024)
msg=client_username.decode('utf-8')
db.data_entry_login(msg,"dsfsds","dsfsfsdd","2") #insert to my db
msg=msg+"\r\n"
client_socket.send(msg.text.encode('utf-8'))
你能帮助我吗?
这仍无法正常工作,如果我删除客户端的recv线。这是工作。你可以尝试在你的电脑上运行它吗?也许有我的电脑上的问题... –
@ShaharBitan啊是ofcourse更新了我的答案 – EL3PHANTEN
你能告诉我我怎么写?我是试图做到这一点,它仍然没有工作 –