使用python写一个两台电脑之间UDP通信的代码,要求:使用GUI实现类似聊天框的功能,ip地址和port在代码中确认,不可更改。
时间: 2024-01-22 14:18:48 浏览: 112
python实现udp通信
以下是一个简单的两台电脑之间UDP通信的代码示例,使用了Python的socket和tkinter模块实现了基本的GUI聊天框。
客户端代码:(IP地址:'127.0.0.1',端口号:5000)
```python
import socket
import threading
import tkinter
def receive_message(sock, text_box):
while True:
message, address = sock.recvfrom(1024)
text_box.insert('end', message.decode('utf-8')+'\n')
def send_message(sock, entry):
message = entry.get().encode('utf-8')
sock.sendto(message, ('127.0.0.1', 5001))
entry.delete(0, 'end')
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('127.0.0.1', 5000))
root = tkinter.Tk()
root.title('UDP Chat Client')
text_box = tkinter.Text(root)
text_box.pack()
entry = tkinter.Entry(root)
entry.pack()
button = tkinter.Button(root, text='Send', command=lambda: send_message(sock, entry))
button.pack()
receive_thread = threading.Thread(target=receive_message, args=(sock, text_box))
receive_thread.start()
root.mainloop()
if __name__ == '__main__':
main()
```
服务端代码:(IP地址:'127.0.0.1',端口号:5001)
```python
import socket
import threading
import tkinter
def receive_message(sock, text_box):
while True:
message, address = sock.recvfrom(1024)
text_box.insert('end', message.decode('utf-8')+'\n')
def send_message(sock, entry):
message = entry.get().encode('utf-8')
sock.sendto(message, ('127.0.0.1', 5000))
entry.delete(0, 'end')
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('127.0.0.1', 5001))
root = tkinter.Tk()
root.title('UDP Chat Server')
text_box = tkinter.Text(root)
text_box.pack()
entry = tkinter.Entry(root)
entry.pack()
button = tkinter.Button(root, text='Send', command=lambda: send_message(sock, entry))
button.pack()
receive_thread = threading.Thread(target=receive_message, args=(sock, text_box))
receive_thread.start()
root.mainloop()
if __name__ == '__main__':
main()
```
使用方法:
1. 在不同的电脑上运行客户端和服务端代码;
2. 将客户端的IP地址和端口号改为服务端的IP地址和端口号;
3. 在客户端的聊天框中输入消息并点击“发送”按钮,服务端的聊天框将显示该消息,并可以进行回复;
4. 在服务端的聊天框中输入消息并点击“发送”按钮,客户端的聊天框将显示该消息,并可以进行回复。
阅读全文