Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2012, 00:30   #1
Heiniken.by
Новичок
Джуниор
 
Регистрация: 13.12.2012
Сообщений: 2
По умолчанию Клиент-серверное приложение. СИ. Не могу сохранить в переменную значение.

Здравствуйте уважаемые форумчане. Не могли бы Вы помочь исправить ошибку. Суть такова. Нужно серверу отправить строку символов. Сервер должен найти там цифры и если они там есть отправить эти цифры обратно клиенту.

клиент работает нормально а вот сервер отсылает только последнюю цифру. В принципе он только её и оставляет в переменной. Там где вывод в консоль сервера всё происходит нормально т.е. выведены только цифры.

вот кусок кода:

while (recvfrom(s,b,sizeof(b),0, (sockaddr *) &local, &size)!=0) {
for (int i = 0; i < strlen(b); i++)
{
if('0' <= b[i] && b[i] <= '9')
{
printf("%c",b[i]); //вывожу в консоль сервера
Buf[i]=b[i];
//sprintf(Buf, "%c", b[i]);
}
}
// Посылает данные на соединенный сокет
sendto(s,Buf,sizeof(Buf),0, (struct sockaddr*)&local, size);
}

Спасибо
Heiniken.by вне форума Ответить с цитированием
Старый 13.12.2012, 09:17   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Вопрос: на какой позиции в Buf запишется число, если входные данные у нас ABC1?
Второй вопрос - на какой позиции в Buf *должно* быть число в этом случае?
Последний вопрос - сколько байтов ответа надо отправить в этом случае?

Бонус вопросы:
Что возвращает recvfrom и что будет с этим кодом в случае ошибки?
Зачем нам strlen() если мы знаем ответ на первый бонусный вопрос?
waleri вне форума Ответить с цитированием
Старый 13.12.2012, 10:04   #3
Heiniken.by
Новичок
Джуниор
 
Регистрация: 13.12.2012
Сообщений: 2
По умолчанию

На какой позиции запишется в первом вопросе. скорее всего число запишется в 3. А нужно что бы оно записалось в 0 позицию. на третий вопрос не уверен но наверное 1 байт.
recvfrom() возвращает число полученых байт. или -1 если ошибка.
Heiniken.by вне форума Ответить с цитированием
Старый 13.12.2012, 11:05   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Ну а теперь посмотрите у вас на какой позиции записывается и сколько байт посылаются.

Далее, бонусный вопрос 3 - почему в таких случаях *нельзя* использовать strlen? Подсказка: что именно делает strlen и *как* это делается.
waleri вне форума Ответить с цитированием
Старый 13.12.2012, 16:09   #5
Heiniken
Новичок
Джуниор
 
Регистрация: 20.03.2009
Сообщений: 2
По умолчанию

записывает в третью позицию.
strlen возвращает в байтах длину строки без символа окончания. наверное как я понял нужно использовать sizeof в данном случае...
но всё равно он в переменную Buf записывает в данном случае в 3 позицию. а если я делаю так:
sprintf(Buf, "%c", b[i]);
но записывается всегда только в первую. к примеру введу a1b2
он найдёт 1 запишет. потом найдёт 2 и затерёт 1 и запишет на то же место 2... как с этим бороться? понимаю что не правильно что то сделал но а что...
Heiniken вне форума Ответить с цитированием
Старый 13.12.2012, 18:41   #6
Heiniken
Новичок
Джуниор
 
Регистрация: 20.03.2009
Сообщений: 2
По умолчанию

Я думаю что нужно что то делать с Buf[i]=b[i]; . Это не правильно мне кажется. Вот только я не знаю что именно...
Heiniken вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент-Серверное приложение и БД Mihail.Glukhov БД в Delphi 17 25.04.2012 11:52
клиент-серверное приложение. MasterSporta Общие вопросы C/C++ 2 04.12.2011 00:16
клиент-серверное приложение roxy1807 БД в Delphi 0 19.04.2011 19:02
Клиент Серверное приложение BARNEY Общие вопросы Delphi 2 28.10.2010 09:30
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18