python socket通信创建两个图形界面,并让服务端和客户端相互发信息到彼此的窗口
时间: 2023-11-09 12:07:40 浏览: 147
首先,需要使用Python的socket模块来创建服务端和客户端的通信。然后,使用Python的GUI库(比如Tkinter)来创建图形界面。具体实现步骤如下:
1. 创建服务端和客户端的socket,并分别绑定IP地址和端口号。
```python
# 服务端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(1)
# 客户端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8888))
```
2. 创建图形界面,包括窗口、文本框和按钮等。
```python
import tkinter as tk
# 创建窗口
window = tk.Tk()
window.title('Socket通信')
window.geometry('400x300')
# 创建文本框
text_box = tk.Text(window)
text_box.pack()
# 创建输入框和发送按钮
input_box = tk.Entry(window)
input_box.pack()
def send_message():
message = input_box.get()
# 发送信息到服务器或客户端
client_socket.send(message.encode())
# 在本地窗口显示发送的信息
text_box.insert(tk.END, '我:{}\n'.format(message))
input_box.delete(0, tk.END)
send_button = tk.Button(window, text='发送', command=send_message)
send_button.pack()
window.mainloop()
```
3. 在服务端和客户端之间进行信息的收发,并在本地窗口显示信息。
```python
# 服务端
while True:
connection, address = server_socket.accept()
data = connection.recv(1024).decode()
text_box.insert(tk.END, '客户端:{}\n'.format(data))
# 客户端
while True:
data = client_socket.recv(1024).decode()
text_box.insert(tk.END, '服务器:{}\n'.format(data))
```
注意:为了保证服务端和客户端可以同时接收和发送信息,需要在两个程序中都包含上述的3步操作。
完整代码如下:
阅读全文