Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: recvfrom() в visualDSP++ 5 не ловит пакеты
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
sse
Железо: BF537 EZ-KIT LITE
проект в visualDSP++ 5

открыл два (передача и прием) RAW ICMP сокета
заполнил 2 sockaddr_in
создал ICMP ping пакет, посчитал CS и по кнопке отсылаю на комп по sendto(). Комп шлет ответ.
В while() до нажатия кнопки крутится recvfrom(), но на ответ на свой ping и на ping с компа возвращ 0.

В чем проблема может быть?
вот краткий исходник:

int socket_fd, socket_fd_tx;
struct sockaddr_in sa,ra;

#define SENDER_PORT_NUM 0
#define SENDER_IP_ADDR "192.168.10.70"
#define RECEIVER_PORT_NUM 0
#define RECEIVER_IP_ADDR "192.168.10.32"

memset(&sa, 0, sizeof(struct sockaddr_in));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(SENDER_IP_ADDR);
sa.sin_port = htons(SENDER_PORT_NUM);

memset(&ra, 0, sizeof(struct sockaddr_in));
ra.sin_family = AF_INET;
ra.sin_addr.s_addr = inet_addr(RECEIVER_IP_ADDR);
ra.sin_port = htons(RECEIVER_PORT_NUM);

socket_fd = socket(AF_INET, SOCK_RAW, 1);
socket_fd_tx = socket(AF_INET, SOCK_RAW, 1);

while(1)
{
while( ) //ждем кнопку
rec_data = recvfrom(socket_fd,(void*)&data_rec_buffer,100,0,(struct sockaddr*)&sa, &len);

send_data = sendto(socket_fd_tx, data_buffer,sizeof(icmp_pack),0,(struct sockaddr*)&ra,sizeof(ra));
}
aL135
вопросы:
1. приемный сокет находится в блокирующем режиме? Если нет, то на момент вызова recvfrom данные могут быть еще не доставлены.
2. не стоит ли на компе firewall, который блокирует icmp трафик?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.