2012-10-12 2 views
0

나는 안드로이드 장치 용 lacewing 및 multimedia fusion 2로 만든 친구의 채팅 프로그램 포트를 만들려고합니다.lacewing server chat에 연결

서버의 청취 소켓에 연결하는 소켓을 성공적으로 만들었지 만 로그인 할 데이터를 보내고 채팅에 입장 할 수없는 것처럼 보입니다. 현재 로그인은 이름 만 필요하지만 데이터 문자열을 보내더라도 서버는 채널을 통해 나를 데려 오기 위해 데이터를 회신하거나 받아들이지 않는 것 같습니다.

나는 알고있다 나는 멀티미디어 융합이 수출의 NDK를 사용하는 등의 다른 방법으로 포트 이것을 쉽게 할 수 있지만, 난 그냥이

PS를 어떻게 작동하는지 파악하려는 : 나는 자바와 libgdx를 사용하고 있습니다 개발

답변

0

당신은 liblacewing 릴레이 프로토콜을 읽을 필요가 : https://github.com/udp/lacewing/blob/0.2.x/relay/current_spec.txt

초기 연결에를, 당신은 당신이 HTTP 클라이언트 아니라는 것을 확인하는 바이트 0을 보낼 수 있습니다. 그런 다음 일반 프로토콜 메시지를 교환 할 수 있습니다.

보낼 필요가있는 첫 번째 메시지는 연결 요청입니다 (거부 메시지가있는 서버에서 거부 될 수 있음). 이것은 같다 : 바이트 0 (2.1.0 요청) (1.2 사이즈) 0 바이트 (2.1.0.0 연결 요청) 문자열 "3 개정판"(2.1.0.0 연결 요청 -> 버전)

서버가 응답 0 (2.2.0.0 연결)로 응답하면 모든 채널에 가입하기 전에 이름을 설정해야합니다. 이 메시지는 2.1.0.1 SetName과 동일하지만 2.1.0.0의 바이트 0 대신 2.1.0.1의 바이트 1이며 프로토콜 버전 대신 문자열로 이름이옵니다. .

그러면 서버는 이름 변경 요청을 수락했다고 가정하고 2.2.0.1 SetName으로 응답해야합니다. 서버가 요청한 이름과 다른 이름을 제공 한 경우이 메시지를 처리해야합니다. 마지막으로 이름을 정하면 2.1.0.2 JoinChannel을 사용하여 채널에 가입 할 수 있습니다. 채널이 아직 존재하지 않으면 여기에 지정한 플래그가 사용됩니다 (예 : 아직 채팅에 아무도 없습니다).이 플래그는 MMF2 프로젝트 파일의 플래그와 일치해야합니다. 이름도 일치해야합니다.

결국, 아직 끝나지 않았습니다! 더 많은 메시지를 처리해야합니다. RelayClient 클래스를 작성하는 것과 거의 같습니다. 힘든 일이지만, 프로토콜 사양을 가지고 있으면 모든 것을 해결할 수 있어야합니다.