我正在使用tkinter和python 3进行游戏项目。我已经在服务器和客户端之间进行了连接。
当我打开服务器时,会打开一个窗口,提示您是否可以启动服务器(启动和停止)。连接后,参与者的姓名将显示在窗口底部。
启动客户端时,将打开另一个窗口,我必须在其中键入游戏的昵称。当我单击“连接”时,客户端应将信息发送到服务器,该服务器将参与者的姓名添加到列表中。
我对print进行了几次测试,以了解它在函数connect_to_the_server
中将走多远,而当我将其放在client.send (name )
下方时,不再显示打印内容
Server.py
import tkinter as tk
import socket
import threading
from time import sleep
import random
server = None
HOST_ADDR = "192.168.1.13"
HOST_PORT = 5555
client_name = ""
clients = []
clients_names = []
player_data = []
def send_receive_client_message(client_connection, client_ip_addr):
global server, client_name, clients, player_data, player0, player1
client_msg = " "
client_name = client_connection.recv(4096)
clients_names.append(client_name)
update_client_names_display(clients_names) # update client names display
def accept_clients(the_server, y):
while True:
if len(clients) < 2:
client, addr = the_server.accept()
clients.append(client)
# use a thread so as not to clog the gui thread
threading._start_new_thread(send_receive_client_message, (client, addr))
Client.py
import tkinter as tk
from tkinter import PhotoImage
from tkinter import messagebox
import socket
from time import sleep
import threading
#This is the button that should send the name to the server
btn_connect = tk.Button(top_welcome_frame, text="Connect", command=lambda: connect())
client = None
HOST_ADDR = "192.168.1.13"
HOST_PORT = 5555
def connect():
global your_details
if len(ent_name.get()) < 1:
tk.messagebox.showerror(title="ERROR!!!", message="You MUST enter your first name <e.g. John>")
else:
your_details["name"] = ent_name.get()
connect_to_server(ent_name.get())
def connect_to_server(name):
global client, HOST_PORT, HOST_ADDR
try:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST_ADDR, HOST_PORT))
print("Connexion OK")
client.send(name) # Send name to server after connecting
print("name send")
# start a thread to keep receiving message from server
# do not block the main thread :)
threading._start_new_thread(receive_message_from_server, (client, "m"))
top_welcome_frame.pack_forget()
top_frame.pack(side=tk.TOP)
window_main.title("Tic-Tac-Toe Client - " + name)
except Exception as e:
tk.messagebox.showerror(title="ERROR!!!", message="Cannot connect to host: " + HOST_ADDR + " on port: " + str(
HOST_PORT) + " Server may be Unavailable. Try again later")
我正在尝试解决此问题,但是我不知道它来自哪里。感谢您的帮助。