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

 
 
> Прием через TCP сокет
inventor
сообщение Oct 5 2016, 08:52
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Прошу прощения за тупой вопрос.
У меня есть устройство которое должно обеспечивать
передачу данных по COM UDP и TCP - отвечает тому
от чего придет запрос.
устройство на СС3200 пишу во freertos
мне не хочется плодить несколько задач для каждого сокета
хотел сделать вот таким образом через селект
CODE

/* Занесем 2 сокета сюда */
FD_ZERO(&read_s); /* Обнуляем множество */
FD_SET(iSockUDP, &read_s); /* Заносим в него наш сокет UDP */
FD_SET(iSockTCP, &read_s); /* Заносим в него наш сокет TCP */
time_out.tv_sec = 0;
time_out.tv_usec = 500000; /* Таймаут 0.5 секунды - ожидаем входящих запросов */


while (IS_CONNECTED(get_wlan_status())) {

ret = select(0, &read_s, NULL, NULL, &time_out);

/* Появились данные UDP */
if ((ret != 0) && (FD_ISSET(iSockUDP, &read_s))) {
****
/* Появились данные TCP */
} else if ((ret != 0) && (FD_ISSET(iSockTCP, &read_s))) {
}


ну и тд.
проблема в том чтобы породить TCP сокет нужно использовать accept
а он дает сокет только когда есть подключение:

CODE
// waiting for an incoming TCP connection
while (iSockTCP < 0) {
// accepts a connection form a TCP client, if there is any
// otherwise returns SL_EAGAIN
iSockTCP = sl_Accept(iTempSock, (struct SlSockAddr_t *) &sAddr, (SlSocklen_t *) & iAddrSize);
if (iSockTCP == SL_EAGAIN) {
MAP_UtilsDelay(10000);
} else if (iSockTCP < 0) {
// error
sl_Close(iSockTCP);
sl_Close(iTempSock);
PRINTF("ACCEPT_ERROR\n");
continue;
}
}


короч я висю в ожидании входящего соединения и соответсвенно пока соединения нет я не перейду к select
как бы это сделать более красиво, а вобще, можно без accept обойтись
один хрен у меня только одно TCP соединение?
Go to the top of the page
 
+Quote Post

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


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

 


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


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