소켓 통신 관련 질문입니다.~
글쓴이: toughguy / 작성시간: 화, 2007/02/20 - 4:38오후
안녕하세요~
지금 소켓 통신을 공부 하고 있는 초보 개발자 입니다.
보통 패킷을 주고 받을때, 패킷의 헤더 부분에 길이를 보내는 것으로 알고 있습니다.
이 길이를 통해 내가 원하는 패킷이 모두 왔는지 확인 할 수 있겠지요,
하지만 이렇게 확인하지 않고,
패킷의 마지막 부분에, 과 같이 XML 형태의 데이터를 주고,
받는 입장에선, 들어오는 패킷의 마지막을 Parsing 하여, 이 도착했는지를 살펴 봄으로써
모든 패킷이 도착했는지 알고 싶습니다.
그런데 만약, 네트워크 상황에 의해 와 같이 도착했을 경우는 어떻게 처리 하나요?
만약 헤더에 길이정보를 받는다고 했을때, 길이 정보가 잘려서 왔을 경우도, 비슷한 경우겠네요..
음, 단순하겐 이전 패킷의 마지막 부분과, 다음패킷의 첫 부분을 살펴보면 될것 같은데,
여러분의 도움을 부탁드립니다^^
그럼 새해 복 많이 받으세요~
Forums:
이런...
위에 html 형태의 자료는 안보이네요 ㅡㅜ
중간에 빠진 부분은, "/PACKET" 이 도착했는지를... 이고,
"/PA , CKET" 와 같이 잘려서 왔을 경우 입니다^^
원래 네트워크
원래 네트워크 프로그래밍에서 fixed length 를 사용하는 경우에는
헤더부분에 길이를 명시하여 통신을 합니다. 가장 일반적인 방식이죠.
이 방식에서는 헤더만 고정길이를 가지게 됩니다.
그러나 어떤 delimeter 를 정해놓고 통신하는 경우에는,
패킷을 받을때마다 계속 파싱을 하면서 delimeter 를 찾아야 하죠.
하지만, delimeter 가 너무 단순하면 전송하는 패킷안에 이게 존재할 수 있기 때문에
delimeter 를 일반 데이터를 사용하지 않고 TCP의 경우는 OOB(out of band)를 사용하여
전송하는 방식을 사용하는 경우가 많습니다.
즉 쉽고 request & reply 식으로 신뢰성있는 통신 프로토콜을 만드는데, 단지 길이정보가
없는 경우라면 OOB 를 이용하는 것도 좋습니다.
========================================
* 부분이 전체를 대변하는 하나의 속성일때 진리이다.
영속적이지 못한 것은 전체가 될 수 없다.
========================================
* The truth will set you free.
댓글 달기