Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сетевое приложение, риторический вопрос (в чем-то) 
:(
    Опции темы
kefir01
Дата 24.7.2008, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

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



Господа знатоки,

Есть необходимость сделать сетевое приложение. Первое что хотелось бы реализовать - сделать так, чтобы при подключении юзера к программе-серверу в ней, скажем в TListBox появлялось, скажем, имя юзера и значок состояния (онлайн-офлайн и т.п.).

Внимание вопрос:

С чего посоветуете начать? Я предполагаю, что здес может помочь один из компонентов Indy, допустим, TIdSimpleServer...
Даже понял как передавать сообщения (пользуясь примером из стандартного набора билдера)... Однако не понимаю как устанавливать непрерывное соединение. Или нужно серверу постоянно (в смысле периодически с каким-то интервалом) опрашивать клиентов об изменившемся (или не изменившемся) состоянии?

з.ы. Заранее спасибо, буду рад примерам и указаниям.
PM MAIL   Вверх
Lazin
Дата 24.7.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



кури сокеты
PM MAIL Skype GTalk   Вверх
kefir01
Дата 24.7.2008, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

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



А есть чо?  smile (или литературу)
PM MAIL   Вверх
Lazin
Дата 24.7.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



даже не знаю если честно, сам разбирался по MSDN + статьи из интернета
PM MAIL Skype GTalk   Вверх
kefir01
Дата 24.7.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

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



Это конечно не похоже на пример, но ладно, спасибо за направление.
PM MAIL   Вверх
fish9370
Дата 24.7.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

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



начни с книжки "C++ Глазами хакера", в интернете она поставляется в виде CHM-файла, и имеет небольшой вес, ты ее легко найдешь.. там, давольно сносно, описаны блокирующие сокеты, с помощью которых можно решить твою проблему.. есть там и примеры.. на этом форуме так же многократно это обсуждалось, но все-таки, я бы посоветовал начать с той книжки..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
kefir01
Дата 24.7.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

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



fish9370 Спасибо. Уже скачал - буду читать.

Кстати пока ждал ответ нашел решение на основе Indy. Во вложении решение - может кому пригодится - модифицированный пример из набора BCB.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  BasicClientServer.rar 814,00 Kb
PM MAIL   Вверх
GIK
Дата 28.7.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата

начни с книжки "C++ Глазами хакера", 

книженция прикольна кстати, советую


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
mrbrooks
Дата 29.7.2008, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



На мой взгляд лучше поднять сначало эту инфу
PM MAIL   Вверх
kefir01
Дата 30.7.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

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



Да последняя статья хорошо объясняет...
PM MAIL   Вверх
Lazin
Дата 30.7.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



лучше все-таки нормальную книгу по TCP/IP прочитать, например Йон Снэйдер - "Эффективное программирование TCP/IP"
сам никак не дочитаю))
PM MAIL Skype GTalk   Вверх
mrbrooks
Дата 30.7.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



для затравки покатит и Касперски.
 Снейдер хорош - не спорю. Но так же рекомендую заценить "Программирование в сетях M$ Windows" Э.Джонса и Д.Оланда если влом ковыряться в MSDN.

Добавлено через 1 минуту и 5 секунд
А вот всякие там глаза Хакера не надо гы
PM MAIL   Вверх
Lazin
Дата 30.7.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Цитата(mrbrooks @  30.7.2008,  12:17 Найти цитируемый пост)
А вот всякие там глаза Хакера не надо гы 

 smile 
PM MAIL Skype GTalk   Вверх
kefir01
Дата 30.7.2008, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 22.6.2007

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



Народ, а каким образом организовать бесконечный цикл ожидания клиентов в BCB?

Код

void __fastcall TForm1::startservClick(TObject *Sender)
{
        if(WSAStartup(MAKEWORD(2,0), &wsaData) != 0)
        sbm("error");
        else sbm("ok");

        if((s = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
        {
        WSACleanup();
        }

sockaddr_in addr;

addr.sin_family = AF_INET;
addr.sin_port = htons(2230);
addr.sin_addr.s_addr = htonl(INADDR_ANY);

        if(bind(s,(sockaddr*)&addr, sizeof(addr)))
        {
        closesocket(s);
        WSACleanup();
        }

        if(listen(s,0x003))
        {
        closesocket(s);
        WSACleanup();
        }


SOCKET cs;
sockaddr_in c_addr;
int c_addr_size = sizeof(c_addr);

    while((cs=accept(s, (sockaddr *) //вот эта строка
            &c_addr, &c_addr_size)))
    {

        HOSTENT *host;
        host = gethostbyaddr((char *)&c_addr.sin_addr.s_addr,4,AF_INET);
        UsersList->Items->Add(String(host->h_name)+": "+String(inet_ntoa(c_addr.sin_addr)));

        DWORD thID;
        CreateThread(NULL, NULL, NextClient, &cs, NULL, &thID);
     }
}


Если без "вот этой строки" (без цикла while), то он подключает одного клиента (через telnet), заносит его данные в ListBox (UsersList) и держит соединение. Других клиентов не воспринимает (что соответствует инфе в литературе по теме).

Если сделать так как написано, то окно сервера подвисает, а подключение клиента не происходит.
PM MAIL   Вверх
mrbrooks
Дата 31.7.2008, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Правильно. Ты сервер с гуем делаешь? А пример был дан для консоли. Посиму любое зацикливание следует выполнять в отдельном потоке.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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