Железо: 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));
}