Hi All! Вот программка (UDP-сервер). main(int argc, char** argv) { struct sockaddr_in server; char buf[1024]; int sd; int rc; unsigned short port_num = 9999; // Server params server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_port = htons(port_num); // New socket sd = socket (AF_INET,SOCK_DGRAM,0); assert(sd != -1); // Bind socket to server port rc = bind (sd, (struct sockaddr *) &server, sizeof(server)); assert(rc != -1); struct sockaddr_in serv; socklen_t serv_len; // Main loop for(;;) { rc = recvfrom(sd, buf, sizeof(buf), 0, (struct sockaddr*)&serv, &serv_len); buf[rc]= (char) NULL; printf("addr = '%u' len = '%u' buf = '%s'\n",serv.sin_addr.s_addr, serv_len, buf); } } После её запуска я вижу: addr = '16777343' len = '16' buf = 'HELLO' Всё здорово! (16777343 - это 127.0.0.1 в network byte order). Меняем программку слегка: main(int argc, char** argv) { struct sockaddr_in server; char buf[1024]; int sd; int rc; unsigned short port_num = 9999; // Server params server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_port = htons(port_num); // New socket sd = socket (AF_INET,SOCK_DGRAM,0); assert(sd != -1); // Bind socket to server port rc = bind (sd, (struct sockaddr *) &server, sizeof(server)); assert(rc != -1); // Main loop for(;;) { struct sockaddr_in serv; socklen_t serv_len; rc = recvfrom(sd, buf, sizeof(buf), 0, (struct sockaddr*)&serv, &serv_len); buf[rc]= (char) NULL; printf("addr = '%u' len = '%u' buf = '%s'\n",serv.sin_addr.s_addr, serv_len, buf); } } После её запуска я опять вижу: addr = '16777343' len = '16' buf = 'HELLO' Опять всё правильно! Проблема: Запускал я это в Gentoo. Всё работало. А вот затем попробовал с KNOPPIX 5.0 LIVE-DVD. Скомпилил прогу номер 1 - всё OK! Затем прогу номер 2 - в поле адреса и длины выводится какая-то ху@ня!!! Если конкретно - 3084534624/32197988328. В чём разница??? Ну убрал/добавил переменные в тело цикла. И что? Поведение стабильное!!! Память вроде не течёт (негде). Что с KNOPPIX'ом???
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от legk
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [pthread][c][socket] recvfrom возвращает «bad file descriptor». (2011)
- Форум Не понимаю почему не работает (2013)
- Форум SOCK_STREAM и особенности работы с ним (2014)
- Форум Сокеты передача сообщений между компьютерами. Помогите найти ошибку. (2012)
- Форум [проблема с bind]Прием мультикаста с разных ip, но одинаковых портов (2010)
- Форум Проблемка с bind (2003)
- Форум Таймаут для connect() (2009)
- Форум Не работает прием Multicast сообщения на втором интрфейсе (2023)
- Форум Проблема с конструтором std::string и const char* (2008)
- Форум Помогите разобраться с sendto (2014)