【发布时间】:2022-11-20 02:08:35
【问题描述】:
我有一个服务器端(Python 3)和一个客户端(Python 2.7),我正在尝试使用套接字模块。 这个想法是,服务器端永久活动,客户端套接字通过函数调用连接。然后需要将数据从服务器发送到客户端,直到客户端断开连接(手动)。然后服务器应该回到监听过程并等待下一个连接。我对套接字没有任何经验,我一直在尝试我发现的一些例子。在第一行,我的问题是重新连接到同一个服务器套接字。
服务器端:
import socket
HOST = "127.0.0.1"
PORT = 65432
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
print("Connected by", addr)
for x in range(10):
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
conn.close()
客户端(使用 Tkinter-GUI):
import Tkinter as tk
import socket
import random
import time
keyState = False
HOST = '127.0.0.1'
PORT = 65432
def onButton():
global keyState
if(not keyState ):
keyState = not keyState
key_button.config(relief='sunken')
connectSocket()
print(keyState)
return
if(keyState ):
keyState = not keyState
key_button.config(relief='raised')
disconnectSocket()
print(keyState )
return
def connectSocket():
print("connectSocket()")
global HOST, PORT
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
for x in range(10):
if(x<5):
val = random.uniform(0.0, 400.0)
else:
val = random.uniform(-400,0)
s.sendall(str(val))
data = s.recv(1024)
print 'Received', repr(data)
s.close()
def disconnectSocket():
print("disconnectSocket()")
return
#Main GUI
root = tk.Tk()
root.title('Python Socket Test')
root.configure(background='white')
root.geometry("200x300")
#Button
root.update()
softkey_button = tk.Button(root, text="Softkey", command = lambda: onButton(), relief='flat')
softkey_button.place(x=75,y=200)
root.mainloop()
【问题讨论】:
标签: python sockets networking server client