Клиент iPod постоянно отправляет данные на сервер C?
-
29-10-2019 - |
Вопрос
У меня есть клиент iOS, настроенный с сервером Linux C через TCP / IP. Проблема, с которой я столкнулся: После того, как соединение установлено, сервер ожидает данных (read ()) и представляет их на экране после получения от iPod. Затем он снова возвращается к read () и так далее. Я могу сделать это чтение / запись один раз, но не навсегда. Код:
родовое словоХорошо. Итак, насколько я знаю, этот метод и случай будут запускаться автоматически после чтения на стороне сервера. Это отлично работает при первом вызове read () на сервере, но при втором вызове сервер просто продолжает зависать для некоторых данных. Журнал, который у меня есть в xcode, показывает, что происходит:
2011-06-17 16: 23: 50.154 sliderFinal [7430: 207] >>: NSStreamEventOpenCompleted // Один из потоков был открыт
2011-06-17 16: 23: 50.156 sliderFinal [7430: 207] <<: NSStreamEventOpenCompleted // Другой поток был открыт
2011-06-17 16: 23: 50.157 sliderFinal [7430: 207] Данные отправлены // Данные были отправлены после первого чтения () с сервера
2011-06-17 16: 23: 50.159 sliderFinal [7430: 207] <<: NSStreamEventHasSpaceAvailable // Это относится к первому вызову read () с сервера
Я вижу, что после первого раунда сервер чего-то ждет. Это сообщение, кажется, снова не доходит до NSStreamEventHasSpaceAvailable. Есть идеи?
Решение
Кажется, у меня все заработало.Не знаю точно, имел ли код, который я опубликовал в моем вопросе, ошибки (я так не думаю, потому что он действительно отправил сообщение, которое я хотел), но в итоге я использовал другой способ написания.
Использовался следующий метод:
родовое словоИ вот код, который я использовал (вместо того, что написано в вопросе):
родовое словоТакже я заметил, что сервер после read () и printf (msg) , он представил мне сообщение о том, что соединение было прервано, поэтому яизменил код на стороне сервера, где я проверял , был ли сервер по-прежнему связан с клиентом, например:
check = recv(newsockf,buffer,256, MSG_PEEK|MSG_DONTWAIT);
..к этому:
родовое словоКажется, это помогло.Теперь он не зря отключается.Проблема решена.