Coolluck
214
2019-06-05 16:29:27 작성 2019-06-05 16:30:49 수정됨
1
685

자바 TCP/IP 소켓통신 쓰레기 값


https://blog.naver.com/kikiki0611/220918727059

위 글에 나와있는 소스코드가지고 Java 소켓통신 테스중입니다

Server : 위 자바소스 코드의 Server class

Client : http://www.j1lab.com/ 통신 프로그램의 client


자바내에서 클라이언트랑 서버 클래스끼리 연결 시 통신에 문제없지만

자바로 만든 통신 프로그램말고 다른 통신 프로그램들끼리는 제대로 데이터를 주고 받지 못했습니다

 

일단 서버(자바)에선 연결되것은 확인되었고

서버에서 클라이언트로 writeUTF 값을 전송시 쓰레기 값 + 원래 값 으로 합쳐져 이상한 값이 나옵니다

아래는 숫자 1을 클라이언트로 보낼 경우 받은 값을 아스키코드의 Hex 값으로 나타낸건데요

앞에 01 은 SOH 이고 뒤에 31은 아스키코드의 1값인데 왜 SOH값이 붙는지 모르겠습니다

또 클라이언트에서 서버로 값을 보낼땐 넘오는 값이 없는데 이유를 인터넷에 찾아봐도 모르겠습니다

뭐가 문제일까요? 혹시나 알려주시면 감사드리겠습니다

 

0
  • 답변 1

  • 겸손합시다
    374
    2019-06-05 17:20:25 작성 2019-06-05 17:21:42 수정됨

    tcp의 스트림은 데이터 경계가 없기때문에 데이터의 경계를 표현하기 위해 해당 데이터의 길이를 데이터 앞단에 넣고 수신측에서 데이터의 길이를 먼저 읽은뒤 해당 길이 만큼 데이터를 읽기때문에 앞단에 1이라는 데이터가 들어간것같습니다.

    즉, 해당 모듈을 개발하신분이 글쓴이가 입력한 1이라는 데이터를 1바이트로 앞단에 입력한것같네요

  • 로그인을 하시면 답변을 등록할 수 있습니다.