Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:带有Tkinter GUI的套接字_Python_Sockets_Tkinter - Fatal编程技术网

Python:带有Tkinter GUI的套接字

Python:带有Tkinter GUI的套接字,python,sockets,tkinter,Python,Sockets,Tkinter,这里有一个新的python编码器。 我正在尝试制作一个游戏,其中数字上有一个5x5的网格,当我点击其中一个时,它们会被一个十字“X”取代,并变灰。代码如下: import tkinter as tk from tkinter import * from tkinter import messagebox import random import socket removed_numbers=[] def numberClick(num,btn): messagebox.show

这里有一个新的python编码器。 我正在尝试制作一个游戏,其中数字上有一个5x5的网格,当我点击其中一个时,它们会被一个十字“X”取代,并变灰。代码如下:

    import tkinter as tk
from tkinter import *
from tkinter import messagebox
import random
import socket

removed_numbers=[]
def numberClick(num,btn):
    messagebox.showinfo('Message',str(num)+' is removed')
    removed_numbers.append(num)
    btn.configure(text='X')
    btn.configure(bg='red',fg='white')
    btn.configure(state="disabled")
    print(removed_numbers)
root = Tk()
#root.geometry("200x200")
w = Label(root, text='Welcome to Bingo!') 
linear_array = [i for i in range(1,26)]
random_array = []
for i in range(1,26):
    temp = random.choice(linear_array)
    linear_array.remove(temp)
    random_array.append(temp) 

rows=5
columns=5
btns = [[None for i in range(rows)] for j in range(columns)]
    
for i in range(rows):
    for j in range(columns):
        num = random.choice(random_array)
        random_array.remove(num)
        btns[i][j]=Button(root, text = num , fg ='red',height = 3, width = 5)
        btns[i][j]['command']=lambda btn=btns[i][j],num=num: numberClick(num,btn)
        btns[i][j].grid(row=i,column=j)

#text1=Text(root,width=47,height=1,bg='grey')
#text1.grid(row=5,column=2)
root.mainloop() 
此处输出:

现在我想创建一个服务器,其中两个具有上面相同代码的客户端连接,当在一个客户端中按下一个按钮时,该操作也会反映在另一个客户端中。我尝试将客户端与服务器连接,如图所示:

Server.py:

import socket

c1 = None #Client socket1
addr1 = None #Client address1
c2 = None #Client socket2
addr2 = None #Client address2   
server_socket1 = socket.socket() #by default it is SOCK_STREAM (TCP) and has porotocal AF_INET (IPv4) 

server_socket1.bind(('127.0.0.1',9999)) #server machine's ip and port on which it will send and recieve connections from

server_socket1.listen(2) #We will only accept two connections as of now , one for each client
print("Server started successfully!!!")
print("Waiting for connections...\n\n")

flag_client1 = '0'
flag_client2 = '0'

while (((c1 is None)and(addr1 is None)) and ((c2 is None) and (addr2 is None))):
        
    if((c1 is None) and (addr1 is None)):
        c1,addr1 = server_socket1.accept()
        print("User connected to client1 socket!!")
        flag_client1='1'
        

    if((c2 is None) and (addr2 is None)):
        c2,addr2 = server_socket1.accept()
        print("\n\nUser connected to client2 socket!!")
        flag_client2='1'

if(flag_client1=='1' and flag_client2=='1'):
        c1.send(bytes(flag_client1,"utf-8"))
        c1.send(bytes(flag_client2,"utf-8"))
        c2.send(bytes(flag_client1,"utf-8"))
        c2.send(bytes(flag_client2,"utf-8"))       
while True:
    msg = c1.recv(4096)
    if(msg!=None):
            msg = msg.decode()
            c2.send(bytes(msg,"utf-8"))
            
    
    msg2 = c2.recv(4096)
    if(msg2!=None):
            msg2 = msg2.decode()
            c1.send(bytes(msg2,"utf-8"))
Client.py:

#Connection Part
client_socket = socket.socket() #by default it is SOCK_STREAM (TCP) and has porotocal AF_INET (IPv4) 
client_socket.connect(('127.0.0.1',9999)) #server machine's ip and port on which it will send and recieve connections from
但连接并没有反映在服务器中。我知道我错了。 有人能指导我如何完成上述任务吗?烧瓶和袜子也能这样吗?这会比tkinter容易吗?我真的需要为我的大学项目做这件事。短暂性脑缺血发作