저는 서버 클라이언트 아키텍처를위한 간단한 파이썬 클라이언트를 만들고 있습니다. 문제는 내가 C에서 문자열로 정수를 변환하고 그것을 통해 파이썬 클라이언트에 UDP를 보내 정수로 변환하려고하면 예외가 발생합니다. C로 널 종료 문자열이있을 수 있다고 생각했기 때문에 널 터미네이터는 없지만 기쁨은 없앴습니다. 어떤 도움을 주시면 감사하겠습니다.Python에서 null로 끝나는 문자열을 Int로 변환합니다.
서버에서 정보를 수신하는 Python (클라이언트) 코드 스 니펫.
while True:
try:
p_ort = client_socket.recvfrom(1024)
portnumber = p_ort[0]
portnumber.strip()
#portnumber = portnumber[:-1]
#portnumber.rstrip("\0")
#this is where i try to convert the string into integer but the exception is thrown
try:
port_number = int(portnumber)
except:
print "Exception"
except:
print "timeout!"
break
이것은 클라이언트에 값을 보내는 서버의 코드 조각입니다.
void sendDataToClient(int sfd , int index )
{
char portNum[9] = {0};
sprintf(portNum , "%d" , videos[index].port); //videos[index].port is an integer
if(sendto(sfd , &(portNum) , 9 , 0 , (struct sockaddr *)&client , len) == -1)
{
perror("sendto()");
}
printf("\nClient Stuff sent!\n");
}
간단하고 최소한의 예를 제공하면 사람들을 도울 수 있습니다. 이 경우, 수신하는 데이터 (파이썬 측)와이를 해석하는 코드. – goncalopp
문제가 발생한 한도에 맞게 코드를 편집했습니다. –
'portnumber.strip()'은'portnumber'를 변경하지 않지만 제거 된 문자열을'반환합니다'. – ch3ka