Я пишу приложение на Android и хочу, чтобы оно могло знать, когда сервер (который я написал на C) умирает или выключается.Я пытаюсь реализовать это, когда сервер отправляет сообщение клиенту (приложение Android) через определенный интервал.Если это сообщение не приходит, клиент знает, что оно больше не подключено к серверу.Они общаются с помощью TCP-сокетов.
Моя проблема в том, что приложение Android не может прочитать то, что пишет сервер.Когда он попадает в первую часть кода, где он пытается прочитать с сокета сервера, он просто зависает.В приложении для Android я использую BufferedReader для чтения из сокета tmpstr = inFromServer.readLine();
, где tmpstr - строка, а inFromServer - BufferedReader, а сервер C просто использует запись write(newsockfd,"I got your message",18);
.
Я также попытался использовать альтернативный Java-сервер, чтобы проверить, не ошиблась ли базовая логика моей программы.Тестовый сервер использовал PrintWriter, и он прекрасно работал с клиентом Android.
Что мне здесь не хватает?Есть ли разница в том, как Java и C буферизуют (или не буферизируют) свои данные?Если мне потребуется предоставить какую-либо дополнительную информацию, сообщите мне.
Редактировать: У меня также нет проблем с тем, чтобы сервер C мог читать данные, отправленные клиентом.У меня проблемы только с тем, чтобы клиент считывал данные, отправленные с сервера.
Редактировать: проблема была исправлена добавлением символа новой строки (\n
) к тому, что сервер отправляет клиенту.