Проблема, которая у меня есть, очень специфична.
Я должен реализовать протокол скользящего окна в C по ссылке. Мой файл sender.c получает в качестве параметров скорость, задержку и процент потерянных или поврежденных файлов. Данные отправляются по ссылке. Поскольку это школьное задание, я не знаю деталей реализации ссылки, но, поскольку отправитель и получатель обязаны инициировать связь с портом и ip, я полагаю, они используют сокеты. В любом случае, я пытаюсь отправить получателю параметры подключения, чтобы использовать их для таймаутов и потока управления. Я создаю полезную нагрузку фрейма данных, которая отправляет 2 целых числа, представляющих скорость и задержку, используя:
int s = (int)(*speed - '0');
int d = (int)(*delay - '0');
sprintf(t.payload,"%d%d",s,d);
Когда я печатаю переменные s и d в файле отправителя, результат равен 1,1, что правильно. После этого я отправляю полученную зарплату получателю, где полезная нагрузка [0] назначается другой переменной int, называемой скоростью, а полезная нагрузка [1] назначается другой int, называемой задержкой. проблема в том, что здесь они имеют значение 49, а не одно, как следует. Я попытался использовать для них функцию atoi (), но при этом задержка успешно преобразуется в 1, а скорость - в 11, что не имеет смысла. Я пробовал много разных способов заставить его работать, отправка их в виде символов и преобразование их на принимающей стороне также не помогло.
Есть идеи?
PS: извините за гигантский пост и мои ошибки в английском!