장치가 수시로 통신 할 수있는 응용 프로그램을 개발해야합니다 (한 장치는 간단한 메시지를 보내고 다른 장치는 응답을 보냅니다).BluetoothServerSocket : 후속 연결을 처리하는 방법
이 통신은 너무 자주 (몇 분에 한 번) 발생하지 않으므로 장치간에 영구 연결을 유지하는 것이 적절하지 않은 것처럼 보입니다. 게다가 어떤 이유로 연결이 끊어 질 수 있으므로 복구 논리가 필요합니다.
대신 앱에 데이터를 보낼 때마다 새로운 연결을 설정하는 것이 좋습니다. 그러나 사양은 BluetoothServerSocket.accept
이 반환 된 후 서버 소켓이 닫혀 있어야한다고 말합니다. 즉, 앱이 더 이상 후속 수신 연결을 수신 할 수 없음을 의미합니다.
현재 서버 소켓을 닫고 동기식으로 들어오는 연결을 처리하지 않기 때문에 응용 프로그램이 이전 연결을 처리하고 닫을 때까지 새 연결을 수락하지 않습니다. 다른 피어가 이러한 처리 중에 연결을 시도하면 어떻게됩니까? 서버가이를 수용 할 준비가 될 때까지 실패하거나 차단됩니까?
나는 초기 아이디어 (영원한 서버 소켓 + 동기 처리)를 테스트 해 보았습니다. 들어오는 연결은 자신의 차례가 받아 들여지기를 기다립니다. 그러나 때로는 클라이언트 소켓 연결에 실패 (시간 초과?) 및 대기중인 동안 장치 중 하나가 unbond있어. –
필자는 각 피어 장치에 대해 별도의 서버 소켓을 만들어야 할 것 같습니다. –