Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сетевой кодинг, ... 
:(
    Опции темы
[ss]3L33T@
  Дата 10.11.2003, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.10.2003
Где: Казармы

Репутация: -1
Всего: 1



Вот тут подумал - а ведь я ничерта не знаю о сетевом кодинге.
ПРОШУ, КАК КОДЕР КОДЕРОВ:напишите plz простую прогу типа client-server.
Работать должна так:
1)Клиент пишет какую-то строку символов, по нажатию enter'а она отправляется серваку
2)Сервер принемает эту строку и выводит её на экран.
3)Всё должно быть в Console Application'е.

Прошу без умных слов, просто напишите прогу!
--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
shedon
Дата 10.11.2003, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



http://www.sources.ru/ - там всё есть!!!


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
RAN
Дата 10.11.2003, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Цитата
Прошу без умных слов, просто напишите прогу

smile.gif

PM MAIL ICQ   Вверх
knave
Дата 12.11.2003, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



да уж, вот еще тут должно быть codeproject.com и codeguru.com


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
knave
Дата 12.11.2003, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Совет -
неужели нельзя сесть с книгой и поэксперементировать самому - пописать пограмки где испоолтзуются ту конструкции которые тебе непонятны, и исследовать их работу. Ты тут кучу таких вопросов задал, ответы на которые есть в любой книге по программированию.


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
r88t
Дата 14.11.2003, 00:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите пожалуйста!!!
Нужен исходник простой проги на C++ посылающий GET запрос на web сервер и выводящий ответ.
Типа на php это так выглядит:

$fp=fsockopen('localhost','80');
fputs ($fp, "GET / \r\n\r\n");
while (!feof($fp)) {
print fgets($fp);
}

[email protected]
  Вверх
NiJazz
Дата 14.11.2003, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



[ss]3L33T@, я тут делал такое...

Клиент:

Код

#include <stdio.h>
#include <windows.h>

#pragma comment (lib, "Kernel32.lib")

int main()
{
HANDLE    hPipe;
LPTSTR    pName = "\\\\.\\pipe\\mypipe";
INT     iInfoToSend;
DWORD    dwBytesWritten;
DWORD    dwMode = PIPE_READMODE_MESSAGE;
DWORD    dwBytesToSend = sizeof(INT);
char    yes_no;

try{

for (;;)
{
 hPipe = CreateFile(
    pName,
    GENERIC_READ |
    GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL);

 if (hPipe == INVALID_HANDLE_VALUE)
 {
  printf("Error while opening a pipe, ");
  //printf("%d\n", GetLastError());
  //return 0;
  throw 0;
 }

 if (!SetNamedPipeHandleState(
       hPipe,
       &dwMode,
       NULL,
       NULL))
 {
  printf("Error while setting state, ");
  //printf("%d\n", GetLastError());
  //break;
  throw 0;
 }

 printf("Enter integer value: ");
 scanf("%d", &iInfoToSend);

 if (!WriteFile (
    hPipe,
    &iInfoToSend,
    dwBytesToSend,
    &dwBytesWritten,
    NULL))
 {
  printf("Error while writing data, ");
  //printf("%d\n", GetLastError());
  //break;
  throw 0;
 }

 if (dwBytesWritten != dwBytesToSend)
 {
  printf("Data send size error\n");
  //break;
  throw 0;
 }

 if (!CloseHandle(hPipe))
 {
  printf("Error while closing handle: ");
  //printf("%d\n", GetLastError());
  //break;
 }

 printf("Close appliacation (Y/N)? ");
 scanf("%c", &yes_no);
 scanf("%c", &yes_no);
 if ((yes_no == 'Y') || (yes_no == 'y')) break;
}
} //try end

catch (...)
{
 printf("%d\n", GetLastError());  
}

if (hPipe != INVALID_HANDLE_VALUE) CloseHandle(hPipe);

return 0;
}


Сервер:

[CODE]

#include <stdio.h>
#include <windows.h>
#include <winbase.h>
#include <malloc.h>


int main()
{
HANDLE hPipe;
LPTSTR pName = "\\\\.\\pipe\\mypipe";
PINT piDigit = (PINT)malloc(sizeof(INT));
DWORD dwBytesForPipe = sizeof(INT);
DWORD dwBytesReadOut;
DWORD dwBytesToRead = sizeof(INT);
INT iSum = 0;

//////////////////////////////////////////////////////////////////////////
try {

hPipe = CreateNamedPipe(
pName,
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |
PIPE_READMODE_MESSAGE |
PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
dwBytesForPipe,
dwBytesForPipe,
NMPWAIT_USE_DEFAULT_WAIT,
NULL
);

if (hPipe == INVALID_HANDLE_VALUE)
{
printf("Error while creating a named pipe, ");
//printf("%d\n", GetLastError());
throw 0;
}

/*else printf("\nPipe's created\n\n");*/

for (;;)
{
if (!ConnectNamedPipe(
hPipe,
NULL))
{
printf("Error while connecting to a named pipe, ");
//printf("%d\n", GetLastError());
throw 0;
}

if (!ReadFile(
hPipe,
piDigit,
dwBytesToRead,
&dwBytesReadOut,
NULL ))
{
printf("Error while reading data, ");
//printf("%d\n", GetLastError());
throw 0;

}

if (dwBytesReadOut != dwBytesToRead)
{
printf("Data read size error\n");
throw 0;
}

if (!FlushFileBuffers(hPipe))
{
printf("Error while flushing buffers, ");
//printf("%d\n", GetLastError());
throw 0;
}

iSum = iSum + *piDigit;

printf("%d\n", iSum);

if (!DisconnectNamedPipe(hPipe))
{
printf("Error while disconnecting from a named pipe, ");
//printf("%d\n", GetLastError());
throw 0;
}

}//for(;;) end

}//try end

catch (...)
{
printf("%d\n", GetLastError());
}

// очистака памяти
for (int i = 0; i < NUM_OF_GROUPS; i ++)
{
if (SidList[i] != NULL)
FreeSid(SidList[i]);
SidList[i] = NULL;
}

free(piDigit);
piDigit = NULL;

if (pAcl != NULL)
{
LocalFree(pAcl);
pAcl = NULL;
}

CloseHandle(hPipe);

return 0;
}
[CODE]


Компилить под VC++ 6. Я правда ещё атрибуты безопасности делал к каналу, но сейчас убрал, чтобы не осложнять. А так там ещё было ограничение на группы юзеров...
Удачи! smile.gif
PM MAIL   Вверх
NiJazz
Дата 14.11.2003, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



[ss]3L33T@, ни умных слов, ни комментариев... smile.gif)
PM MAIL   Вверх
NiJazz
Дата 14.11.2003, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Поправка к серверу:

Код


#include <stdio.h>
#include <windows.h>
#include <winbase.h>
#include <malloc.h>


int main()
{
HANDLE hPipe;
LPTSTR pName = "\\\\.\\pipe\\mypipe";
PINT piDigit = (PINT)malloc(sizeof(INT));
DWORD dwBytesForPipe = sizeof(INT);
DWORD dwBytesReadOut;
DWORD dwBytesToRead = sizeof(INT);
INT iSum = 0;

//////////////////////////////////////////////////////////////////////////
try {

hPipe = CreateNamedPipe(
pName,
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |
PIPE_READMODE_MESSAGE |
PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
dwBytesForPipe,
dwBytesForPipe,
NMPWAIT_USE_DEFAULT_WAIT,
NULL
);

if (hPipe == INVALID_HANDLE_VALUE)
{
printf("Error while creating a named pipe, ");
//printf("%d\n", GetLastError());
throw 0;
}

/*else printf("\nPipe's created\n\n");*/

for (;;)
{
if (!ConnectNamedPipe(
hPipe,
NULL))
{
printf("Error while connecting to a named pipe, ");
//printf("%d\n", GetLastError());
throw 0;
}

if (!ReadFile(
hPipe,
piDigit,
dwBytesToRead,
&dwBytesReadOut,
NULL ))
{
printf("Error while reading data, ");
//printf("%d\n", GetLastError());
throw 0;

}

if (dwBytesReadOut != dwBytesToRead)
{
printf("Data read size error\n");
throw 0;
}

if (!FlushFileBuffers(hPipe))
{
printf("Error while flushing buffers, ");
//printf("%d\n", GetLastError());
throw 0;
}

iSum = iSum + *piDigit;

printf("%d\n", iSum);

if (!DisconnectNamedPipe(hPipe))
{
printf("Error while disconnecting from a named pipe, ");
//printf("%d\n", GetLastError());
throw 0;
}

}//for(;;) end

}//try end

catch (...)
{
printf("%d\n", GetLastError());
}


free(piDigit);
piDigit = NULL;

CloseHandle(hPipe);

return 0;
}




Некоторые лишки убрал...

PM MAIL   Вверх
NiJazz
Дата 14.11.2003, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Если будут вопросы - задавай...
PM MAIL   Вверх
[ss]3L33T@
Дата 14.11.2003, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.10.2003
Где: Казармы

Репутация: -1
Всего: 1



2 NiJazz:
Пасибо.
Хоть кто-то.
--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
NiJazz
Дата 16.2.2004, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Давно уж прошло. Просто наткнулся на то, что понизили рейтинг за нежелание продвигать эту тему.
Думаю, что разумно продолжить её. Кто первый? smile.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.