0

我正在使用 python 建立一个客户端和一个服务器关系。客户端有一个按钮,我单击该按钮将连接到服务器并计算客户端单击的按钮。

但在我的情况下,服务器只计算一次,客户端按钮不再起作用。有人知道我的案子吗?任何帮助将不胜感激,在此先感谢。

这是我的代码

客户端.py

import socket 
from Tkinter import*

root = Tk()

root.title("ADKOO")
root.geometry("150x80")

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12340
s.connect((host, port))

def counterPlus():
  s.send('sent by '+host)


app = Frame(root)
app.grid()

button1 = Button(app, text="+", width=15, command=counterPlus)

button1.grid()
root.mainloop()

服务器.py

import socket

s = socket.socket()
host = socket.gethostname()
port = 12340
s.bind((host, port))

s.listen(5)
pressed = 0
while True:
 c, addr = s.accept()
 pressed = pressed + 1
 print 'Got connection from', addr
 print c.recv(1024), 'pressed count', pressed
 #c.close()
4

1 回答 1

1

server.py接受一个客户,然后只接受一次,然后接受另一个客户....

您需要循环以连续接收来自客户端的数据。

试试下面的代码:

import socket

s = socket.socket()
host = socket.gethostname()
port = 12340
s.bind((host, port))

s.listen(5)
while True:
    c, addr = s.accept()
    pressed = 0
    while True:
        print 'Got connection from', addr
        data = c.recv(1024)
        if not data:
            break
        pressed = pressed + 1
        print data, 'pressed count', pressed

笔记

您的代码和此代码确实一次处理一个客户端。

要处理多个客户端,您需要多进程/多线程/选择/...

于 2013-09-10T15:35:36.810 回答