реклама на сайте
подробности

 
 
> IAR PowerPac TCP/IP, Как узнать, что передающая сторона закончила передачу?
Liseev
сообщение Feb 22 2010, 13:05
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 99
Регистрация: 27-10-07
Из: СПб
Пользователь №: 31 797



Пытаюсь освоить TCP/IP стек в составе PowerPac.

Создаю сокет SocketData аналогично приведенным примерам, используя функции socket, bind, listen, access.
Далее принимаю данные:

while (1)
{
Timeout = 30000;
setsockopt(SocketData, SOL_SOCKET, SO_RCVTIMEO, &Timeout, sizeof(Timeout));
NumBytes = recv(SocketData, (char*)ac, 100, 0); // Принимаем по возможности 100 байт
if (NumBytes <= 0) // Ошибка!!!
{
// Получаем код ошибки
getsockopt(SocketData, SOL_SOCKET, SO_ERROR, &Error, sizeof(Error));
if (Error == ETIMEDOUT)
{
printf("recv() timeout after %d seconds of inactivity!\n", Timeout/1000);
break;
}
}
}

Передающая сторона, передав данные, закрывает соединение. Вопрос в том, как мне об этом узнать? В отладчике я вижу, что когда данные кончаются, recv всегда возвращает 0 и никогда не возвращает -1. Error всегда 0, ошибка по тайм-ауту не возникает. Как быть? Как отследить закрытие соединения со стороны передатчика?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 06:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016