用python完成应用程序,实现两个人的TCP服务器客户端聊天,要求带输入框和显示框
时间: 2024-02-24 18:57:29 浏览: 78
好的,我可以帮你解决这个问题。首先,我们需要使用Python的socket模块来创建TCP服务器和客户端。然后,我们可以使用Tkinter库来创建GUI界面,包括输入框和显示框。
下面是一个简单的示例代码,可以实现两个人的TCP服务器客户端聊天:
服务器端代码:
```python
import socket
# 创建TCP服务器
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 9999))
server_socket.listen(1)
# 等待客户端连接
print('等待客户端连接...')
client_socket, client_address = server_socket.accept()
print('客户端已连接:', client_address)
# 接收和发送消息
while True:
# 接收消息
message = client_socket.recv(1024).decode()
if not message:
break
print('收到消息:', message)
# 发送消息
reply = input('回复消息:')
client_socket.sendall(reply.encode())
# 关闭连接
client_socket.close()
server_socket.close()
```
客户端代码:
```python
import socket
import tkinter as tk
# 创建TCP客户端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 9999))
# 创建GUI界面
root = tk.Tk()
root.title('TCP聊天')
root.geometry('400x400')
# 创建输入框和显示框
input_box = tk.Entry(root, width=50)
input_box.pack(side=tk.BOTTOM, padx=10, pady=10)
display_box = tk.Text(root, width=50, height=20)
display_box.pack(side=tk.TOP, padx=10, pady=10)
# 发送消息
def send_message():
message = input_box.get()
if message:
client_socket.sendall(message.encode())
input_box.delete(0, tk.END)
# 接收消息
def receive_message():
while True:
message = client_socket.recv(1024).decode()
if not message:
break
display_box.insert(tk.END, '收到消息:' + message + '\n')
# 启动接收消息的线程
import threading
threading.Thread(target=receive_message, daemon=True).start()
# 创建发送按钮
send_button = tk.Button(root, text='发送', command=send_message)
send_button.pack(side=tk.BOTTOM, padx=10, pady=10)
# 运行GUI界面
root.mainloop()
# 关闭连接
client_socket.close()
```
这段代码中,我们创建了一个TCP服务器,它会等待客户端连接,并接收和发送消息。同时,我们创建了一个TCP客户端,它会连接到服务器,并在GUI界面中提供输入框和显示框,支持发送和接收消息。当客户端发送消息时,它会将消息发送给服务器,当服务器收到消息时,它会将消息打印出来,并等待回复。客户端会在GUI界面中显示收到的消息,并提供一个发送按钮,用于发送回复消息。
阅读全文