2013-04-09 6 views
0

Adobe AIR를 사용하여 소켓 서버를 설정하고 두 클라이언트가 서버를 사용하여 서로간에 메시지를 보낼 수있게하려고합니다 (Android 기반 프로젝트이므로 서버 PC에서 중간 사람으로 행동해야한다). 어떤 이유에서인지, 내가 보내는 메시지는 다른 클라이언트뿐만 아니라 오히려 동일한 클라이언트로 되돌려 보내집니다. 나는 이미 각 메시지의 출처와 상대방을 다루는 방법을 식별 할 수있는 시스템을 구축했다.소켓 서버 - 클라이언트에서 클라이언트로 메시지 보내기

변수 'connectionNum'int는 기본적으로 클라이언트가 숫자 0 또는 1인지 여부를 나타내고 서버와주고받는 데이터는 앞에 0 또는 1이 있습니다.

이상적으로 나는 모든 메시지의 시작 부분에서 int를 사용하여 양쪽 모두에게 보내려고 시도하는 것이 아니라 한 번에 특정 클라이언트로 데이터를 보내는 것이 이상적입니다.

현재 연결하는 두 번째 클라이언트의 메시지 만 서버를 통해 실제로 전송됩니다. 첫 번째 메시지는 이유를 모르는 빈 메시지를 보냅니다.

답변

5

현재 연결하는 두 번째 클라이언트의 메시지 만 서버를 통해 실제로 전송됩니다. 첫 번째 메시지는 이유를 모르는 빈 메시지를 보냅니다. 당신은 단지 서버에서 하나 clientSocket 개체가 두 번째 클라이언트가 첫 번째 클라이언트 소켓을 잃고 연결 이렇게하면 다른 사람이, 연결할 때 당신이 그것을 덮어 쓰기 때문에

이 때문이다. 서버에 sendData라고 전화 할 때는 항상 마지막에 연결 한 사람인 clientSocket을 사용합니다.

이 문제를 해결하려면 clientSocket 개체가 서버에 있어야합니다. 그런 다음 메시지를 브로드 캐스트하려는 경우 올바른 클라이언트를 선택하여 모든 클라이언트에게 메시지를 보내거나 모든 클라이언트에 메시지를 보낼 수 있습니다.

+0

정말 고맙습니다. –

+0

당신을 진심으로 환영합니다. –

관련 문제