python实现通过网络连接实现互相文字传输并有聊天框
时间: 2024-04-01 07:33:27 浏览: 46
python 聊天对话框实现
5星 · 资源好评率100%
要在Python中通过网络连接实现互相文字传输并有聊天框,您可以使用Socket编程和Tkinter GUI库。以下是一个简单的示例,演示如何使用Python的socket库和Tkinter库在两个计算机之间传输文字,并在GUI界面中显示聊天记录。
第一步:创建服务器端
```python
import socket
import threading
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 12345
# 绑定端口号
server_socket.bind((host, port))
# 设置最大连接数
server_socket.listen(1)
# 等待客户端连接
print('等待客户端连接...')
def receive_message(client_socket):
while True:
# 接收客户端发送的数据
data = client_socket.recv(1024).decode()
if not data:
break
# 在聊天框中显示接收到的数据
chat_box.insert('end', '客户端:' + data + '\n')
def accept_clients():
while True:
client_socket, addr = server_socket.accept()
print('连接地址:', addr)
# 创建新线程来接收客户端发送的数据
threading.Thread(target=receive_message, args=(client_socket,)).start()
# 创建一个新线程来等待客户端连接
threading.Thread(target=accept_clients).start()
```
第二步:创建客户端
```python
import socket
import threading
import tkinter as tk
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 12345
# 连接服务器
client_socket.connect((host, port))
def receive_message():
while True:
# 接收服务器发送的数据
data = client_socket.recv(1024).decode()
if not data:
break
# 在聊天框中显示接收到的数据
chat_box.insert('end', '服务器:' + data + '\n')
def send_message():
# 获取用户在输入框中输入的数据
data = input_box.get()
# 发送数据到服务器
client_socket.send(data.encode())
# 在聊天框中显示发送的数据
chat_box.insert('end', '客户端:' + data + '\n')
# 清空输入框
input_box.delete(0, 'end')
# 创建一个新线程来接收服务器发送的数据
threading.Thread(target=receive_message).start()
# 创建GUI界面
root = tk.Tk()
root.title('聊天室')
# 创建聊天框
chat_box = tk.Text(root, height=20, width=50)
chat_box.pack()
# 创建输入框和发送按钮
input_box = tk.Entry(root, width=50)
input_box.pack(side='left')
send_button = tk.Button(root, text='发送', command=send_message)
send_button.pack(side='right')
# 启动GUI界面的消息循环
root.mainloop()
```
这个例子中,我们创建了一个服务器端和一个客户端,并在Tkinter GUI界面中显示聊天记录。服务器端监听指定端口,并等待客户端连接。一旦客户端连接,服务器端创建一个新线程来接收客户端发送的数据,并在聊天框中显示接收到的数据。客户端连接到服务器,并创建一个新线程来接收服务器发送的数据,在GUI界面中显示聊天记录。客户端还通过输入框和发送按钮发送消息到服务器,并在聊天框中显示发送的数据。
以上是一个简单的示例,您可以根据需要进行修改和扩展,以实现更复杂的网络通信和GUI界面。
阅读全文