Python에서 입출력 작업에 소켓을 사용할 때 다음이 가능합니다. 다음 오류가 발생합니다.
TypeError: a bytes-like object is required, not 'str'
이 오류는 바이트열류 객체를 기대하는 함수에 문자열 객체를 전달하려고 할 때 발생합니다. 이 오류가 발생하는 일반적인 시나리오 중 하나는 UDP 소켓을 통해 데이터를 보내는 상황입니다.
다음 Python 코드를 고려해 보겠습니다.
from socket import * serverName = '127.0.0.1' serverPort = 12000 clientSocket = socket(AF_INET, SOCK_DGRAM) message = input('Input lowercase sentence:') clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print (modifiedMessage) clientSocket.close()
이 코드를 실행하려고 하면 다음과 같은 문제가 발생할 수 있습니다. 문자열을 입력으로 입력하면 앞서 언급한 오류가 발생합니다. sendto 함수는 문자열이 아닌 bytes 또는 bytearray와 같은 바이트열류 객체를 기대합니다.
해결책:
이 문제를 해결하려면 입력이 다음과 같아야 합니다. 소켓을 통해 전송하기 전에 바이트열류 객체로 변환됩니다. 이는 아래와 같이 encode() 메서드를 사용하여 달성할 수 있습니다.
<code class="python">clientSocket.sendto(message.encode(),(serverName, serverPort))</code>
이 수정을 통해 코드는 UDP 소켓을 통해 바이트열류 객체를 올바르게 전송하여 TypeError를 해결합니다.
위 내용은 Python 소켓 프로그래밍에서 'TypeError: 'str'이 아닌 바이트열류 개체가 필요합니다.'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!