改写上述代码,为客户端添加界面,界面如下图所示, 当点击客户端“发送”按钮时,可以多次给服务器端发 送信息
时间: 2024-03-20 18:45:01 浏览: 13
很抱歉,我无法看到您所提到的“图像”或“屏幕截图”,因为我是一个纯文本AI,无法查看图像。但是,我可以给出一个改进后的代码,以实现您所描述的功能。
以下是一个简单的 Python 客户端和服务器端代码示例:
服务器端代码:
```python
import socket
HOST = '127.0.0.1' # 服务器 IP 地址
PORT = 65432 # 服务器端口号
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT)) # 绑定服务器 IP 地址和端口号
s.listen() # 开始监听连接请求
conn, addr = s.accept() # 接受客户端连接请求
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024) # 接收客户端发送的数据
if not data:
break
print('Received:', data.decode())
conn.sendall(data) # 将数据发送回客户端
```
客户端代码:
```python
import socket
import tkinter as tk
HOST = '127.0.0.1' # 服务器 IP 地址
PORT = 65432 # 服务器端口号
def send_msg():
msg = input_box.get() # 获取用户输入的信息
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT)) # 连接服务器
s.sendall(msg.encode()) # 发送信息给服务器
data = s.recv(1024) # 接收服务器返回的信息
output_box.insert(tk.END, f'Server: {data.decode()}\n') # 在输出框中显示服务器返回的信息
root = tk.Tk()
root.title('Client')
input_label = tk.Label(root, text='Input:')
input_label.grid(row=0, column=0)
input_box = tk.Entry(root)
input_box.grid(row=0, column=1)
send_button = tk.Button(root, text='Send', command=send_msg)
send_button.grid(row=0, column=2)
output_label = tk.Label(root, text='Output:')
output_label.grid(row=1, column=0)
output_box = tk.Text(root, width=50, height=10)
output_box.grid(row=1, column=1, columnspan=2)
root.mainloop()
```
这个代码示例使用了 Python 的 socket 模块来实现客户端和服务器端之间的通信。客户端使用 tkinter 模块来创建用户界面。
在客户端界面中,用户可以在输入框中输入信息,然后点击“发送”按钮将信息发送给服务器。服务器将接收到的信息返回给客户端,并在客户端的输出框中显示。如果用户想要发送多条信息,只需要输入信息后点击“发送”按钮即可。
请注意,这只是一个简单的示例代码,并不包含任何错误处理和安全性措施。在实际应用中,您需要考虑如何处理错误和保护系统安全。