블루 투스 채팅 예제를 사용해 여러개의 UUID를 사용하여 블루투스를 통해 한 서버에 여러 클라이언트가 접속하는 다중 접속코드를 짜고있습니다. 접속 실패시 for문을 사용하여 UUID를 돌리고 있는데 처음 클라이언트는 문제없이 들어갑니다. 그런데 2번째 클라이언트부터 for문을 돌지 않고 첫번째 UUID를 통해서만 접속을 합니다.... 접속이 실패된거 같은데 서버쪽엔 연결성공 시 뜨는 토스트가 뜨지 않고 클라이언트쪽은 성공했다고 토스트가 뜨네요.... 통신을 해봐도 첫번째 클라이언트만 반응을하고 2번째 클라이언트는 반응하지 않습니다ㅠㅠ 2번째 클라이언트 접속해제시 서버 2번째 클라이언트 모두 접속 해제 토스트가 뜹니다. 첫번째 클라이언트 접속해제시 서버, 첫번째, 두번째 클라이언트 모두 접속해지가 뜹니다. 도대체 이게 뭐죠?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ....... ㅠㅠㅠㅠㅠㅠㅠ도와주세요 블루투스 너무 어렵네요ㅠㅠ 일주일째 고민중입니다... 코드는 길어서... 필요시 바로 올리겠습니다.
UUID를 인위적으로 조작하여 7개의 UUID를 사용하면 모두 접속 잘됩니다.... connect이부분이 문제인데 이부분만 코드를 올리겠습니다.
문제 : for문이 돌지 않고 계속 첫번째 UUID만을 사용
public synchronized void connect(BluetoothDevice device) {
if (D) Log.d(TAG, "connect to: " + device);
temp_device = device;
// Cancel any thread attempting to make a connection
if (mState == STATE_CONNECTING) {
if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}
}
// Cancel any thread currently running a connection
if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}
// Create a new thread and attempt to connect to each UUID one-by-one.
for (int i = 0; i < 7; i++) {
//if(UUID_CHECK[i] == 1){
//UUID_CHECK[i] = 1;
//Log.d(TAG, "!!!!!!!!!!!!!!ConnectedThread i :" + i);
temp = i;
try {
mConnectThread = new ConnectThread(device, mUuids.get(i));
mConnectThread.start();
setState(STATE_CONNECTING);
Log.d(TAG, "ConnectedThread i :" + i);
//break;
} catch (Exception e) {
}
//}
}
}