Android 클라이언트와
C# 서버가 tcp로 소켓 통신을 하려고 하는데요..
뭐 스트링은
자바에서 EUC-KR 로 보내고..
C# 에서는 System.Text.Encoding.GetEncoding(EUC_KR_CODE_PAGE) 이거 이용해서 받으면 잘되고요
int 는
자바에서 DataOutputStream 이용해서 writeInt 해서 보내고
c# 에서는 byte[] 를 Array.Reverse(byte[]); 에 넣어서 BitConverter.ToInt32(temp, 0); 하면
int 타입도 잘 받을수 있었습니다...
물론 위에꺼만 해결하는데도 좀 삽질을 많이 했지만요...
하지만... 문제는...
파일전송을 해야하는데요.. (이미지파일)..
자바에서
DataOutputStream 으로 이미지파일을 byte[] 형태로해서 쭉 뿌려주고
c#에서는
byte[] 로 읽은걸 MemoryStream 으로 쭉 모은다음에
FileStream에 MemoryStream 을 toArray() 해서 넣은다음 Write 파일로 만들면요...
이미지가 깨져서 들어오네요..ㅠㅠ 바이트 배열 길이는 맞는데 말입니다..ㅠㅠ
인터넷에 찾아보니까 JAVA 의 byte는 부호있는 8비트 정수(-128 ~ 127) 고
C# 의 byte 는 부호없는 8비트 정수(0 ~ 255) 라는데요..
그래서 안맞아서 그런건지..
Java 에서 변환해서 보내야하는건지
C#에서 변환해서 받아야 하는건지..
아직 잘 모르겠습니다..
ㅠㅠ 이건 찾아도 잘 안나오고..
위 방법이 아니더라도 c#과 java 간에 tcp 로 파일전송 해보신분 계신가요..
여기서 막혀서 더 못나가고 있네요 ㅠ




위사이트 참조해보세요
int를 Array.Reverse 를사용했다는말은 엔디안 문제인것 같습니다.
윈도우, 리눅스 자체의 코드체계가 달라서 생기는 문제인것 같습니다.
이미지도 byte 이므로 byte 자체들을 상위,하위를 바꾸어야 할것 같습니다.
저는 위 질문같이 해본적은 없습니다. 수고하세요