C# 파이썬 소켓통신 중 정수형 데이터 송수신에 질문이 있습니다.
C#(클라이언트) ----- 파이썬(서버)간에 소켓통신으로 데이터 송수신중인데요.
파이썬에서 정수형 데이터를 보내고 C#에서 정수형데이터를 출력하려는데 공백이나옵니다.
정수형데이터는 송수신이 불가능한가요? 아니면 제가 코드를 잘못짠건가요?..
아래는 해당부분 코드입니다.
파이썬(서버)코드 (data2가 정수형이고 str(data2)로 형변환했는데도 공백이 나옵니다.)
C#(클라이언트)코드
출력화면
이미 문제는 해결하셨으리라 생각되는데 한번 남겨 봅니다.
이런 경우엔 echo server / client 부터 구현해보시는게 좋을 것 같아요. byte[] 통신을 하는 경우엔 최근엔 Protocol Buffers와 같은 직렬화 라이브러리를 많이 사용하니 위에 예시로 주신 데이터 외 더 복잡한 형식의 데이터 송수신이 필요한 경우에 살펴보시면 좋겠습니다.
아래 코드는 질문에 대한 답변입니다. 복잡해질 수 있는 부분은 모두 제외했어요.
[python]
data = 12345
socket.sendall(data.to_bytes(4, 'big')) # socket close는 바로 하지 마시기 바랍니다.
[c#]
int recv = socket.Receive(buffer);
if (recv == 4) {
if (BitConverter.IsLittleEndian)
Array.Reverse(buffer, 0, 4); // to little endian
Console.WriteLine(BitConverter.ToInt32(buffer, 0));
}