파이썬에서 간단한 소켓 프로그래밍을하려고합니다. 필자는 파이썬에서 입력을 받아들이고 응답을 보내는 UDP 서버를 가지고 있습니다. 클라이언트 코드에 문제가 있습니다.Python UDP 소켓이 recvfrom()에서 즉각적인 오류를 던졌습니다.
sock = socket.socket(
socket.AF_INET, socket.SOCK_DGRAM
)
sock.bind(('0.0.0.0', 0))
sock.settimeout(2)
sock.sendto(json.dumps({
'operation': operation,
'operands': [operand1, operand2]
}), (host, port))
print sock.recvfrom(4096)
이 코드는 서버가 실행 중일 때 완벽하게 작동합니다. 그러나 서버를 실행하지 않고 코드를 실행하면 recvfrom()을 차단하는 대신 즉시 코드가 예외를 throw합니다.
socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host
잠시 후 원하는 기능이 시간 초과됩니다. 누구든지 내가 뭘 잘못하고 있다고 설명 할 수 있습니까? 나는 서버 코드에서 recvfrom을 사용하고 블록하므로 약간의 차이점이있다.