소켓통신 관련 조언 구합니다.
황소숨
소켓통신을 이용한 10명정도가 참가하는 채팅창을 만들었습니다.
로컬에선 문제 없이 작동을 해서 실제 온라인 테스트를 했는데 문제가 발생했습니다.
채팅기능 외에도 여러가지 기능을 넣었는데 사용한 방식은
클라이언트에서 메시지를 보낼때 메시지 앞에 @#CHAT#@ , @#MOVE#@ 등을 붙여서
서버에서 앞에 붙은 문자열을 검사해서 전체대화, 귓속말, 이동 등으로 구분하고
역시 앞에 문자를 붙여서 해당 내용을 클라이언트로 보내주면 클라이언트에서 해당 기능을 실행하는 방식입니다.
@#CHAT#@+대화내용
@#MOVE#@+x좌표+@#MOVE#@+y좌표
이런식입니다. 구분이 필요할 경우 문자로 split해서 사용 합니다.
불특정 10명을 연결해서 테스트하니 클라이언트가 전송한 내용은 거의 실시간으로 모든 내용이 서버에 정확히 출력됩니다.
서버에서 해당 내용을 처리해서 클라이언트로 전송을하면 일부 사용자는 정상적으로 나온다고하고 일부 사용자는 나오지 않는다고 하는데 네트웍에서 원인을 찾기가 쉽지 않네요.
나오지 않는 사용자도 초반엔 정상작동을 하다가 어느순간부터 잘안된다고 하네요. 그러다 다시 정상작동 한다는 경우도 있고요.
writeUTF 와 readUTF 사용 했으며 일부 함수에서 연속으로 flush()를 반복시키니
클라이언트에서 flush 횟수만큼 읽어내지 못해서 데이터가 정체되는 현상이 있어서
ProgressEvent.SOCKET_DATA 리스너에서bytesAvailable 검사해서 0이 될때까지 readUTF 를 반복합니다.조언 부탁 드립니다.
-
메이커
시작과 끝을구분해서... 데이터를 이어서 받는 로직으로 해야됩니다.
끝으로 정의한 바이트값이 들어오면 그전까지의 데이타를 파싱하는 ... -
맨마루
플래시로 원격제어를 만든사람입니다.
소켓통신에서는 데이터가 끊어져서 들어올때가 있습니다.
데이터를 구조체 형식으로 정의해서 데이터를 검증해서 받아야 합니다. @,.@