Что-то не могу понять. Раньше с UDP работал мало. Сейчас задаю удаленный адрес и порт через connect(), а локальный порт выбирает ОС. Так все работает. Но нужно задать фиксированный локальный порт. bind() возвращает ошибку - Invalid argument.
Код выглядит примерно так:
memset(&addr_local,0,sizeof(addr_local));
addr_local.sin_family = AF_INET;
addr_local.sin_port = htons(local_port);
addr_local.sin_addr.s_addr = htonl(INADDR_ANY);
bind(fd,(struct sockaddr*)&addr_local,sizeof(addr_local)) );
Что же не так?