为什么TIdIRC不能连接到频道?有更好的组件吗?

问题描述 投票:0回答:2

我一直在努力处理谷歌的废话文件,即使它连接到服务器也无法加入该频道。 (它说连接到服务器)

//On Form Make
procedure TForm2.FormCreate(Sender: TObject);
  begin
   IdIRC1.Connect();
  end;

//on connected
procedure TForm2.IdIRC1Connected(Sender: TObject);
  begin
   ShowMessage('Connected to server');
   IdIRC1.Join('#TheChannel', 'password');
  end;      

一旦我关闭表单,就会出现错误:

Project raised exception class EIdException with message 'Not Connected'

一旦连接,我用什么功能来通道/检查输入?还有哪些其他IRC连接选项(组件)适用于Delphi应用程序?

任何帮助都会受到赞赏,谷歌没有这个真的没有。我想要的就是能够连接/查看频道聊天消息并聊聊聊天;通过IRC的简单字符串IO ...

delphi client irc indy channel
2个回答
1
投票

猜猜你没有满足所有的服务器要求。只是IdRac.Connect是不够的,这对我有用:

FIRC.Host:= 'irc.freenode.org';
FIRC.Port := 6667;
FIRC.Username:= 'SapoIndy';
FIRC.Nickname:= 'SapoIndy';
FIRC.RealName:= 'Fabio Gomes';
FIRC.Connect;

FIRC.Join('#TheChannel');

要弄清楚发生了什么,你需要得到一些事件的输出,我已经实现了这些:

FIRC.OnStatus:= @Status;
FIRC.OnNotice:= @Notice;
FIRC.OnMOTD:= @MOTD;

获取一些事件,你应该弄清楚服务器告诉你什么,不要试错。

关于发送和接收消息,我前段时间实现了一些,这是项目,它是使用Lazarus制作的。

https://bitbucket.org/fabioxgn/irc/src/b510d73e553d/main.pas


1
投票

不要在Join()事件中调用OnConnected。该事件只是意味着建立了底层套接字连接。 Connect()仍在运行,并且在触发OnConnected事件时尚未实际登录到IRC服务器。等到Connect()退出之后再发出任何命令:

procedure TForm2.FormCreate(Sender: TObject); 
begin 
  IdIRC1.Connect; 
  ShowMessage('Connected to server'); 
  IdIRC1.Join('#TheChannel', 'password'); 
end; 
© www.soinside.com 2019 - 2024. All rights reserved.