Вопрос № 97043: Здравствуйте! Недавно начал заниматься сокетами (WinSocket) и никак не могу реализовать ни одно программу на основе клиент-сервер. У меня большая к Вам просьба: если у кого есть какой либо исходник пришлите мне его с подробными описанием каждого кода...Вопрос № 97157: Здравствуйте эксперты!Скажите как можно преобразовать тип char(char[200]) к типу LPCSTR.Заранее спасибо...
Вопрос № 97.043
Здравствуйте! Недавно начал заниматься сокетами (WinSocket) и никак не могу реализовать ни одно программу на основе клиент-сервер. У меня большая к Вам просьба: если у кого есть какой либо исходник пришлите мне его с подробными описанием каждого кода. А то я скачивал кучу исходников из интернета и не один из них не работает. Желателно чтоо бы применялся класс "СSocket", а то просто Socket слишком длинным и непонятный ( впрочим слишком старый). Ненадо огромной программы мне достаточно будет саммой маленькой,
что бы она например просто обменивалась короткими сообщениями. Я понимаю что навязал большую кучу непонятного. Но прошу Вас что бы вы мне помогли. Когда будите описывать код пожалуйста пишите все по подробнее, я хочу полностью понять суть его работы. Заранее спасибо.
С уважением Адам.
Отвечает: Терсков Сергей
Здравствуйте, Шахабов Адам Хаважиевич!
На MSDN вы можете найти достаточно много информации по классу CSocket. Например вот здесь :
приводится последовательность действий для установки связи между клиентом и сервером на CSocket объектах. Также различные вопросы по сетевому программированию можно найти на форуме RSDN посвященному этой теме
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 02.08.2007, 04:09
Вопрос № 97.157
Здравствуйте эксперты!Скажите как можно преобразовать тип char(char[200]) к типу LPCSTR.Заранее спасибо
Отправлен: 02.08.2007, 23:39
Вопрос задал: Hunter20 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Ilkras
Здравствуйте, Hunter20!
очень просто: LPCSTR p = (LPCSTR)(char)(char[200]); , в предположении что вы забыли поставить скобки.
кроме того, выражение char(char[200]) мягко говоря некорректно. Дело в том, что char[200] представляет собой указатель на выделенный на стеке массив из 200 байт. добавление (char) - кастинг (преобразование типа) к типу char - меняет смысл выражения. В результате вы теряете выделенный массив и пользуетесь указателем для хранения одного байта.
Если же вы не забыли поставить скобки, то выражение просто неправильно.
Тогда можно предположить, что вы хотели определить указатель на строку. Например так:
char myStr[200];
LPCSTR myPointer = (LPCSTR)myStr;
Если не ответил на ваш вопрос - пишите в форум или письмом.
Ответ отправил: Ilkras (статус: Студент)
Ответ отправлен: 03.08.2007, 01:00 Оценка за ответ: 5 Комментарий оценки: Спасибо P.S.Я имел ввиду тип char вообще,а char[200] как пример в частности
Отвечает: Терсков Сергей
Здравствуйте, Hunter20!
Как я понимаю, вы хотите сделать преобразование массива типа char (с размером 200) к типу LPCSTR. Только это не тип, а всего лишь переопределение const char *. Расшифровывается LPCSTR как long const pointer to string (нелюбимая многими нотация WINAPI). Поэтому само преобразование будет выглядеть так:
char str[200];
LPCSTR lpsz = (LPCSTR) str;
или
char str[200];
LPCSTR lpsz = static_cast(str);
Стандарт С++ советует использовать второй вариант (хотя он и более громоздкий).
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 03.08.2007, 02:59 Оценка за ответ: 5 Комментарий оценки: Большое спасибо P.S.подошёл только первый вариант
Отвечает: kool
Здравствуйте, Hunter20!
Вот так, например
char y[200],z;
LPCSTR t=y;
t=&z;
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 03.08.2007, 18:33 Оценка за ответ: 5 Комментарий оценки: Спасибо.Просто я и сам пробовал так сделать,но несрабатывало.Сейчас всё нормально работает.Ещё раз спасибо!