Я пытаюсь реализовать простой интерфейс передачи сообщений между «клиентской» и «серверной» программой (на данный момент на одном компьютере) с использованием сокетного программирования в Python.Вот мой код как для клиента, так и для сервера:
#CLIENT
import os
from socket import *
host = "127.0.0.1" # set to IP address of target computer
port = 13000
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = bytes(input("Enter message to send or type 'exit': "), 'utf-8')
UDPSock.sendto(data, addr)
if data == "exit":
break
UDPSock.close()
os._exit(0)
#SERVER
import os
from socket import *
host = "127.0.0.1"
port = 13000
buf = 1024
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
UDPSock.bind(addr)
print("Waiting to receive messages...")
while True:
(data, addr) = UDPSock.recvfrom(buf)
print("Received message: " + data)
if data == "exit":
break
UDPSock.close()
os._exit(0)
Когда я отправляю сообщение от клиента, сервер быстро высвечивает ошибку «Отслеживание последнего вызова последним», а затем программа сервера закрывается.Этот код изначально был адаптирован из чего-то, что работало на Python 2, поэтому я внес небольшие изменения, но, возможно, я чего-то упускаю.Я довольно новичок в программировании сокетов в Python, поэтому любая помощь будет оценена.