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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 08:31   #1
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию Создание ICQ клиента

Добрый день.
Хочу создать свой ICQ клент.
Реально ли будет осуществить следующее:
1) Прием и отправка сообщений только из списка контактов, который берется из локальной БД.
2)Запрет отправки файлов
3)Оффлайн сообщения
4)Анти-спам
S@fer вне форума Ответить с цитированием
Старый 20.03.2009, 09:01   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

конечно можно, правда список пользователей хранится на сервере, но можно и в бд... отправка файлов? не вопрос, просто не делаешь ее и все т.д. берем компонент и вперед

для антиспама тебе придется написать функцию которая будет отличать в сообщения в которых находится спам и не спам
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 20.03.2009, 09:04   #3
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

то что список контаков хранится на сервере, это я знаю.
Мне необходимо отображать только те контакты, которые занесены в бд. И чтобы пользователь не мог получать сообщение от тех контактов, которых нет в базе. Такое можно сделать?
S@fer вне форума Ответить с цитированием
Старый 20.03.2009, 09:06   #4
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

конечно... проверяешь номер входящего сообщения с номерами в бд, если совпадают пропускаешь иначе режешь
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 20.03.2009, 10:10   #5
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Сразу начались вопросы.
Установил компонент ICQClient
Нашел пример использования
Код:
procedure TForm1.LoginBtnClick(Sender: TObject);
begin
  //Check if Password & UIN was set
  if (StrToInt(UINEdit.Text) = 0) or (PasswordEdit.Text = '') then
  begin
    MessageBox(0, 'Please set your UIN & Password', 'Could not login', MB_ICONERROR);
    Exit;
  end;

  LoginBtn.Enabled := False;                      //Disable Login button to prevent login errors 

  //Theese parameters can be set in Properties tab of TICQClient component
  ICQClient1.ConvertToPlaintext := True;          //Convert RTF text to plain (when you don't use TRichEdit)
  ICQClient1.ICQServer := 'login.icq.com';        //Default login server
  ICQClient1.ICQPort := 5190;                     //Default login port
  ICQClient1.Password := PasswordEdit.Text;       //Set password
  ICQClient1.UIN := StrToInt(UINEdit.Text);       //Set UIN
  {-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
  ICQClient1.Login;                               //Login to server!
  EventMemo.Lines.Add('Connecting to server...'); //Add a line showing that we've started connection to the server
end;

//This event called on a successfull logon
procedure TForm1.ICQClient1Login(Sender: TObject);
begin
  EventMemo.Lines.Add('Successfull logon! Try to send a message to someone now!');
end;

//This event called when connection with ICQ server lost or you cannot login in different reasons
procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject);
begin
  EventMemo.Lines.Add('Connection with ICQ server failed');
  LoginBtn.Enabled := True;  
end;

//Called when TICQClient cannot connect to specified host(login.icq.com), possible wrong login host or network is down
procedure TForm1.SendMsgBtnClick(Sender: TObject);
begin
  //If we are online then send a message, otherwise show message requireing a login
  if (not ICQClient1.LoggedIn) then
  begin
    MessageBox(0, 'Please, login before sending a message', 'Could not send message', MB_ICONERROR);
    Exit;
  end;
  //Finally send the message
  ICQClient1.SendMessage(StrToInt(DestUINEdit.Text), MessageMemo.Text);
end;

//This event called when someone sends you a message
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
begin
  EventMemo.Lines.Add('You received a message from ' + UIN + ': ' + Msg);
end;

//This event is called when error in TICQClient is occured
procedure TForm1.ICQClient1Error(Sender: TObject; ErrorType: TErrorType;
  ErrorMsg: String);
begin
  if ErrorType = ERR_WARNING then
    EventMemo.Lines.Add('Warning: ' + ErrorMsg)
  else
    EventMemo.Lines.Add('Error: ' + ErrorMsg);
  LoginBtn.Enabled := True;
end;
но подключение не происходит, пишет
Received malformed login packet

Если аська запущена (в друом клиенте (qip)), то при запуске программки qip говорит, что номер используется другим пользователем и выходит.
S@fer вне форума Ответить с цитированием
Старый 20.03.2009, 10:29   #6
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

значит пробуй при выключенной qip подключаться
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 20.03.2009, 10:53   #7
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

то же самое пишет.
Номер и пароль проходят.
Если пишу не правильный пароль, то система говорит
"Bad password"

Вот сам пример
Вложения
Тип файла: zip VerySimpleExample.zip (8.1 Кб, 44 просмотров)

Последний раз редактировалось KORN; 20.03.2009 в 14:48. Причина: пользуйся правкой
S@fer вне форума Ответить с цитированием
Старый 20.03.2009, 11:56   #8
FANATID
Пользователь
 
Регистрация: 12.02.2009
Сообщений: 62
По умолчанию

http://progs.volkov.spb.su/ticqclient/
пользовался этим компонентом. писал на дельфи. никаких проблем не было. но терпения не хватило дописать бота вообщем рекомендую этот компонент
FANATID вне форума Ответить с цитированием
Старый 20.03.2009, 14:52   #9
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

FANATID Спасибо за ссылку.
Появился следующий вопрос
Error: Connection failed. You have connected too quickly, please wait and retry 10 to 20 minutes later.
Как обходить такую ошибку? И не смотря на нее всеравно подключаться?
S@fer вне форума Ответить с цитированием
Старый 20.03.2009, 14:58   #10
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

английский что совсем не понимаешь?
написано же что подключаешься слишком часто, попробуй переподключиться через 10-20 минут...
никак ты ее не обойдешь, тебя заблокировал сервер
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание почтового клиента на Delphi g0liath Работа с сетью в Delphi 2 19.03.2009 01:30
Зависание клиента Firebird. KrPr БД в Delphi 4 28.01.2009 09:13
Создание клиента и интерфейса AlexMod Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 24.01.2009 20:07
IP клиента JoanM Работа с сетью в Delphi 13 01.05.2008 16:30
законность использования icq клиента в своем приложении tetris Свободное общение 14 18.04.2008 12:46