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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2012, 16:35   #1
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
Вопрос Строка с вложенными командами для для различных процедур

Всем привет!)))

Сервер отказывается выполнять команды заложенные в строке от клиента, к примеру я отправляю строку в которой первые 4 символа отвечают за процедуру которую должен выполнить сервер, но сервер её не выполняет сразу, а запоминает, и только при получении новой строки от клиента выполняет предыдущую строку.Посоветуйте как быть пожалуйста

Код:
 int bytes_recv;
    while ((bytes_recv = recv(my_sock, &buff[0], sizeof(buff), 0)) &&
    bytes_recv != SOCKET_ERROR) 
	{
    send(my_sock, &buff[0], bytes_recv, 0); //возвращаем сообщение обратно клиенту
	buff[bytes_recv] = 0;
	//printf(buff);                       // выводим соообщение от клиента
    char way[1024];                      //  массив символов для обработки ifами
	string a = buff;                    //   записываем строку из буфера в string a 
	a=a.substr(0,5);                   //     получаем из string a первые 4 символа
	strcpy(way, a.c_str());           //       передаём содержимое(4 символа) string a в символьный массив way[]

		if (!strcmp(&way[0], "info"))
		{
			char info[1024];
			//strcpy(info, b.c_str());
			//cout << "info" << info << endl;
			strcpy(info,"welcome to info:\n ");
			send(my_sock, info, strlen(info), 0);
stdio вне форума Ответить с цитированием
Старый 08.03.2012, 17:38   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
a=a.substr(0,5); // получаем из string a первые 4 символа
Все видят получение пяти символов.
char way[] вообщем-то не нужен, раз уж <xstring>
Код:
	string a = buff;
	a = a.substr(0,4);
	if (!a.compare("info"))
	{
		//....
	}
EUGY вне форума Ответить с цитированием
Старый 08.03.2012, 17:51   #3
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

Спасибо EUGY !)) благодаря вашей помощи не в первый раз сдвигаюсь с мёртвой точки )))
stdio вне форума Ответить с цитированием
Старый 09.03.2012, 06:44   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Все видят получение пяти символов.
char way[] вообщем-то не нужен, раз уж <xstring>
Код:
	string a = buff;
	a = a.substr(0,4);
	if (!a.compare("info"))
	{
		//....
	}
Зачем копировать данные, если можно получить точно такой же результат ничего не копируя?
_Bers вне форума Ответить с цитированием
Старый 09.03.2012, 07:02   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Зачем копировать данные, если можно получить точно такой же результат ничего не копируя?
Конечно можно, я бы вообще string не использовал.
Но stdio "набивает руку", экспериментируя... Пусть.

P.S.
Раз уж заикнулся, то речь об этом:
Код:
	
if (!memcmp(buff, "info", 4 * sizeof(char)))
{
//...
}

Последний раз редактировалось EUGY; 09.03.2012 в 07:30.
EUGY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для получения статистических данных с различных сайтов. raddonx Софт 0 21.02.2011 08:46
Переменная для всех процедур paravoz1k Помощь студентам 1 21.11.2010 00:31
Общая переменная для различных обработчиков событий Mike_new Общие вопросы .NET 3 29.12.2008 16:43
использование процедур и функций для работы с массивами.....Паскаль.... КиношкА Помощь студентам 6 13.01.2008 14:23