테스트 목적으로 로컬 무선 네트워크를 통해 작동하도록 채팅 앱을 개발하고 있습니다. 통신 전송을위한 최선의 선택은 무엇입니까? (각 전화기에는 로컬 IP 만있는 유일한 정보라고 가정) 소켓? 그냥 테스트이기 때문에 채팅을 언급테스트를 위해 로컬 무선 네트워크의 두 전화기간에 데이터를 전송하려면 어떻게해야합니까?
, 내 목적은 같은 등 일부 변수의 값, 배열
어떤 아이디어/제안 :
테스트 목적으로 로컬 무선 네트워크를 통해 작동하도록 채팅 앱을 개발하고 있습니다. 통신 전송을위한 최선의 선택은 무엇입니까? (각 전화기에는 로컬 IP 만있는 유일한 정보라고 가정) 소켓? 그냥 테스트이기 때문에 채팅을 언급테스트를 위해 로컬 무선 네트워크의 두 전화기간에 데이터를 전송하려면 어떻게해야합니까?
, 내 목적은 같은 등 일부 변수의 값, 배열
어떤 아이디어/제안 :
간단한 소켓 및 버퍼링 된 스트림을 사용하십시오. 필요한 JSON 인코딩 된 메시지 세트를 작성하십시오. 해당 메시지를 사용하여 데이터를 랩핑하고 소켓을 통해 보내십시오. 경험으로부터 JSON 메시지의 길이를 나타내는 방법을 통합해야하며, 때때로 메시지 전송/수신 도중에 지연/갭이 발생합니다. 우리가 한 일은 메시지의 처음 4 바이트 (예를 들어, Int)는 후속 메시지의 (바이트) 길이를 나타냅니다. 예 : JSON 문자열이 30 바이트 길이 인 경우 소켓을 통한 모든 전송이 길이 - 페이로드 조합의 쌍으로 이루어 지도록 실제 메시지를 먼저 30 (바이트) 보내십시오.
개인적으로 저는 이것을 Android 프로젝트에서 수행했습니다. ObjectInputStream/ObjectOutputStream 라우트를 계속 진행하면 다른 플랫폼 (예 : iOS 등)과의 호환성이 향상됩니다. 청크로 묶인 base64로 인코딩 된 json 페이로드를 사용하여 파일을 전송하기까지했습니다 (모든 메시지가 여전히 JSON에 있음).
나는 길이 - 페이로드 쌍이 최선의 방법이라고 생각하지 않습니다.
를 사용하여 기존의 채팅 라이브러리를 감사합니다 (같은 데이터를 전송하는 것입니다 Smack) 표준화 된 채팅 프로토콜 (XMPP)의 구현을 제공하고 하위 수준의 세부 사항을 모두 잊어 버립니다.
참고 : FTP는 파일 전송 용이며 사용하는 모든 통신은 거의 TCP를 사용하는 소켓 기반입니다. 유일한 질문은 원시 TCP를 사용하고 직접 프로토콜을 작성하는지 또는 기존 프로토콜과 구현을 사용하여 애플리케이션 세부 사항을 걱정할 수 있는지 여부입니다.
예, FTP가 단지 파일 전송을위한 것임을 완전히 잊었습니다. 불행히도 채팅 라이브러리는 저에게 적합하지 않습니다. 왜냐하면 저는 데이터 전송을 테스트하기 위해 채팅을 개발하고 있기 때문에 채팅에 대해서는별로 신경 쓰지 않아요. 작은 데이터 패킷 (변수, 배열 등)을 전송하면됩니다.) – Tiago
아마도 가장 간단한 옵션 중 하나는 소켓을 사용하고 PrintWriter
및 LineNumberReader
에 스트림을 래핑 한 다음 JSON 인코딩 데이터를 보내는 것입니다. 작은 변수/배열에 적합해야합니다.
귀하의 질문에 혼란 스럽습니다. 파일 전송이나 단순한 메시지/채팅에 대해 묻고 있습니까? – Hyangelo
@ Hyangelo 당신은 완전히 옳았습니다. 나는 작은 패킷의 데이터 (변수, 배열, 그런 것들)의 전달에 대해 말하고 있습니다. 파일 전송 없음! – Tiago
제목이 파일 전송 대신 데이터를 나타낼 수 있도록 편집을 제출했습니다. – Hyangelo