romashko 0 10 октября, 2007 Опубликовано 10 октября, 2007 · Жалоба юзаю стек TCP-IP под uCOS-II (порт для IAR) для AT91sam7x256-EK как, используя функции стека TCP-IP передать данные? к примеру, настройки такие: IP платы - EK_IP (сервер) IP компа - PC_IP (клиент) порт 3128 в натройках сети на компе помечен его IP-шник: PC_IP маска: 255.255.255.0 шлюз: EK_IP набираем в фаре: ping EK_IP - обмен есть теперь нужно передать к примеру, 256 байт от платы к компу. На компе уже стоИт клиент, позволяющий вбивать IP и порт. киньте пожалуйста пример или часть кода, реализующего передачу данных! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dem 0 10 октября, 2007 Опубликовано 10 октября, 2007 (изменено) · Жалоба Нужен TCP или UDP ? Примерно так (выдрано из старого тестового проекта, должно заработать - сейчас не могу проверить) Подставьте свои порты и IP-адреса (my_addr - локальный сокет, srv_addr - адрес сокета на PC) : Передача по UDP unsigned short datasize = 1000; unsigned char * data = (unsigned char *) malloc( datasize * 20); // creating socket struct sockaddr_in my_addr, srv_addr, srv2_addr; int cln = socket( SOCK_DGRAM, NET_SOCK_TYPE_DATAGRAM , IPPROTO_UDP ); int _status = 0; my_addr.sin_family = AF_INET; my_addr.sin_port = htons(100); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); srv_addr.sin_family = AF_INET; srv_addr.sin_port = htons(999); srv_addr.sin_addr.s_addr = htonl(NetASCII_Str_to_IP("192.168.111.33", &err)); unsigned int net_delay = 5; // sending some data while (1) { _status = sendto( cln, (void *)data, datasize, 0, (struct sockaddr *)&srv_addr, sizeof(struct sockaddr_in) ); OSTimeDlyHMSM(0, 0, 0, net_delay); } // sending loop Передача по TCP (с подключением) : unsigned short datasize = 1000; unsigned char * data = (unsigned char *) malloc( datasize * 20); // creating socket struct sockaddr_in my_addr, srv_addr, srv2_addr; int cln = socket( SOCK_STREAM, NET_SOCK_TYPE_STREAM , IPPROTO_TCP ); int _status = 0; my_addr.sin_family = AF_INET; my_addr.sin_port = htons(100); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); srv_addr.sin_family = AF_INET; srv_addr.sin_port = htons(999); srv_addr.sin_addr.s_addr = htonl(NetASCII_Str_to_IP("192.168.111.33", &err)); _status = connect( cln, (struct sockaddr *)&srv_addr, sizeof(struct sockaddr_in) ); unsigned int net_delay = 5; if (_status < 0) { // closing socket - some error occured close(cln); } else { // here socket connected // sending some data while (1) { _status = sendto( cln, (void *)data, datasize, 0, (struct sockaddr *)&srv_addr, sizeof(struct sockaddr_in) ); OSTimeDlyHMSM(0, 0, 0, net_delay); } // sending loop }// if connected Изменено 10 октября, 2007 пользователем _dem Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maximator 0 17 октября, 2008 Опубликовано 17 октября, 2008 · Жалоба dem, а у меня вот какая проблема: тоже обмен по udp, если не вызывать sendto(), то после включения платы ось быстренько подымается и начинает сразу на ping со стороны компа,а если сделать вызов sendto(), отправляю всего лишь слово "Привет!!!", ось не отвечает на ping и не передает данные 28 сек, а потом начинает и все ок, подскажите в чем может быть проблема Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться