2013-08-23 3 views
8

Итак, у меня есть сокет, который подключен к внешнему веб-адресу, и когда он получает определенное сообщение, он должен отключиться. Я попытался позвонить socket.close(), но socket.isConnected() по-прежнему прав. Не повезло найти ответВ Android как отключить сокет?

ответ

4

isConnected() сообщает только, успешно ли вы подключились к сокету. isClosed() говорит вам, если вы позвонили close().

Заканчивать эти ребята Ответные https://stackoverflow.com/a/3701249/2453771

+0

Хорошо, так что следующий вопрос заключается в вызове close kill the connection? А если нет, то что будет? – user2312638

+0

Вызов 'close()' закрывает вашу сторону сокета. Сервер не уведомлен о том, что вы закрыли сокет. – Nick

0

попробовать

socket.isClosed() 

Возвращает булевых, закрыт ли этот сокет. См Sockets

0

"При использовании гнезда(), который вы, кажется, забыли, Socket.isConnected() говорит вам Socket.connect() был ли называется или нет. Аналогично для IsClosed () и закрытие().

Путаница над этими методами результатами в заблуждении состояния сокета, который находится под контролем приложения, с состоянием общей связи, которая находится под контролем протокола . isConnected() и isClosed() сообщают, что вы сделали для гнездо. Там нет других API, чем читать и писать для определения состояния соединения.»

Oracle documantion < здесь это хорошо объяснил, что после вызова .close() соединение закрывается, и вы можете проверить isClosed().

.close():

закрывает данный сокет

.

Любой поток, который в настоящий момент заблокирован в операции ввода-вывода в этом сокете, будет выкинуть SocketException.

После того, как розетка была закрыта, она недоступна для использования в сети (т. Е. Не может быть восстановлено или восстановлено). Должен быть создан новый сокет .

0

http://developer.android.com/reference/java/net/Socket.html#close()

Выполните контрольную сумму возвращаемых данных, убедитесь, что вы получите правильное значение. Если так, и вы позвонили близко и попробуете все, все должно быть хорошо.

Вы можете посмотреть в отладчике и убедиться, что ничего не течет.