2017-11-18 5 views
0

내 질문은 tcp 연결을 사용하여 수신 된 데이터를 올바르게 처리하는 방법에 관한 것입니다. 사실 tcp 연결을 설정하면 스트림이 생성됩니다. 시작과 끝이있는 메시지를 보내고 싶습니다. 데이터가 어떤 경계도 지정하지 않고 스트림에서 흐르고 있으므로 메시지의 시작과 끝을 어떻게 식별 할 수 있습니까? 나는 그들을 인식하기 위해 나의 메시지의 처음과 끝 부분에 몇 가지 특수 문자를 넣으려고 생각했지만 그것이 적절한 방법인지 궁금합니다. 그래서 내 질문은 어떻게 내가 제대로 tcp 연결에 대한 메시지 경계를 설정할 수 있습니까? tcp 연결을위한 경계를 설정하는 올바른 방법

사전에 감사합니다 (I는 서버 측 클라이언트 측 자바를위한 Node.js를 사용하고 있습니다)

답변

0

는 일반 TCP 연결은 수신 측이 방법을 알 수 있도록 데이터 형식을 정의하는 프로토콜의 일종이 필요합니다 보내지는 것을 해석하십시오. 예를 들어 http는 이러한 프로토콜 중 하나이며 webSocket은 다른 프로토콜입니다. 기존 프로토콜에는 수천 가지가 있습니다. 나는 자신이 원하는 것을 만들기에 적합하고 좋은 것을 찾는 것이 바람직하다.

서로 다른 프로토콜은 데이터 형식을 정의하는 데 다른 방식을 사용하므로 데이터 조각을 구분하는 방법이 다릅니다. 예를 들어 http에서는 \n을 사용하여 머리글을 윤곽 처리 한 다음 각 줄에 xxxx: yyyy을 사용하고 빈 줄을 사용하여 머리글의 끝을 윤곽으로 나타냅니다.

다른 프로토콜은 메시지 유형, 메시지 길이 및 메시지 페이로드가있는 메시지 패킷을 정의하는 바이너리 형식을 사용합니다.

말 그대로 수백 가지 방법이 있습니다. 미리 만들어진 선택 항목이 너무 많기 때문에 일반적으로 적절한 프로토콜 인 기존 프로토콜을 찾고 자신의 프로토콜을 작성하고 코드를 작성하는 대신 미리 작성된 서버 및 클라이언트를 사용하여 각 끝마다 사용할 수 있습니다.

+0

답변에 jfriend00님께 감사드립니다. 기존 프로토콜에 대한 몇 가지 문서를 읽었습니다. 내 목표는 안드로이드에서 메시징 응용 프로그램을 수행하는 것입니다. 그러나 프로토콜이 많아서 어느 것을 선택해야하는지 혼란 스럽습니다. 나는 미리 만들어진 websocket 서버/클라이언트 또는 xmpp 프로토콜을위한 node-xmpp를 생성하기위한 socket.io와 같은 기존 모듈이 있다는 것을 알아 차리지 만, 어떤 모듈이 매칭되는지는 모른다. 당신은 분명히 저보다이 분야에서 더 많은 경험을 가지고 있습니다. 그래서 저는 여러분에게 어느 것이 좋은 것인지 물어보고 클라이언트 측 (android/java)과 서버 측 (노드)에서 구현하기 위해 좋은 문서를 제공합니까? – masterbate

+0

@masterbate - 글쎄, 당신은 전혀 요구 사항을 설명하지 않았지만 메시지를 한 방향 또는 양방향으로 보내고 두 끝점 간의 지속적인 연결을 유지하려는 메시징의 경우 socket.io는 좋은 메시지가됩니다. 시합. 그 외에도, 당신이하려는 일에 대해 더 많은 세부 사항을 제공해야합니다. 문자 그대로 아마도 이미 정의 된 1000 개가 넘는 프로토콜이 있으므로 누구나 답안에서 모두 설명 할 수있는 것은 아닙니다. socket.io에는 노드 j와 안드로이드 모두를위한 프로토콜을 구현하기 위해 미리 빌드 된 라이브러리가 있습니다. – jfriend00

+0

필자의 요구 사항은 클라이언트와 서버 사이의 지속적인 연결을 설정하는 것입니다 (P2P 연결이 아님). 하지만 더 자세한 정보를 찾았고 socket.io가 내가 원하는 것 같습니다. 경험을 공유해 주셔서 감사합니다. – masterbate