我最近意识到IP多播(显然在公共互联网上效果不佳)和应用程序多播(根据http://en.wikipedia.org显然在IRC和PSYC中使用)之间存在区别./ wiki/Multicast).
有没有关于实现应用程序级多播的好教程?
我认为组播的重点是减少普通网段的带宽,因此我很难理解应用级组播的作用.
在上一个问题中,我询问了如何将文本发送到记事本.它帮了我很大的忙.对于第2部分,这是相同应用的mIRC的简化版本:
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
IntPtr mainHandle = FindWindow("mIRC", null);
IntPtr serverHandle = FindWindowEx(mainHandle, new IntPtr(0), "MDIClient", null);
IntPtr chanHandle = FindWindowEx(serverHandle, new IntPtr(0), "mIRC_Channel", null);
IntPtr editHandle = FindWindowEx(chanHandle, new IntPtr(0), "Edit", null);
SendMessage(editHandle, 0x000C, 0, textBox1.Text);
Run Code Online (Sandbox Code Playgroud)
这似乎对我来说是正确的,除了它不起作用!是否窗口名称不正确(MDIClient,mIRC_Channel和Edit)?这些是我通过Google搜索"FindWindowEx mIRC"在网站上找到的值.
1.)我在上面做错了什么? …
我如何使用正则表达式来匹配IRC昵称?这是在Ruby中完成的,如果这有所不同(它可能会,正则表达式的语法,但谁知道.)
编辑:IRC昵称可以包含任何字母,数字或以下任何字符: <
- [ ] \ ^ { }
我看过RFC,但我仍然在苦苦挣扎.我在C#中编写了一个基本客户端,但是找不到正确连接的文档.
一旦我连接并传输NICK和USER信息,我就需要加入一个频道.如果我马上加入,没有任何反应 - 大概是因为它太快了.我必须推迟它,但我不知道我需要等待哪个命令才能知道它可以继续.
我得到的东西:
:irc.fish.net注意AUTH:查找你的主机名......
和
:irc.fish.net 001 FishBot:欢迎
以及代码002,003,005,251,252等的东西,但我找不到在线的任何地方,告诉我这些是什么.
所以我的基本2个问题是:你发送了什么JOIN作为回应,我在哪里可以找到上面的IRC代码对应的内容?RFC文档没用!
我正在用Python编写一个IRC bot.
来源:http://pastebin.com/gBrzMFmA(对不起,我不知道如何在这里有效/正确地使用代码标签)
当"irc"插座死机时,无论如何我可以去检测它是否死了然后自动重新连接?
我现在谷歌搜索了一段时间,发现我必须创建一个新的套接字.我正在尝试并添加一些东西,比如在正确的时候捕捉socket.error:但它似乎只是挂起而没有正确重新连接..
提前感谢您的帮助
我正在制作一个机器人连接到一个irc的踢和笑,我正在让它响应不同的东西,但我希望它回应CTCP ACTION命令,这通常被用户称为/我用于角色播放或显示动作.
根据这个关于ctcp http://www.irchelp.org/irchelp/rfc/ctcpspec.html的精彩网页 ?
格式是地板上的\ 001ACTION barfs.\ 001
所以我设置我的机器人来回应
writer.WriteLine("PRIVMSG " + CHANNEL + " \001ACTION " + message + "\001");
Run Code Online (Sandbox Code Playgroud)
我也在我的控制台中打印出这个结果,所有响应都是"没有要发送的文字"
我真的不知道这是什么意思告诉我,我认为转义字符是在早期打破线,\ 0完全忽略了它之后的另一个01,所以我在控制台中打印机器人打印出来的是什么它和我打字/我跳舞,我在控制台阅读
PRIVMSG CHANNEL :(奇数符号)ACTION消息(奇数符号)我不知道奇怪的符号是什么,但对我来说它们看起来像笑脸.....在与几个人交谈后,我明白格式是正确的但是对于不同的语言,\ 001可能不同
所以我查了一下\ 001对于c#和我的fin\x01和\ 0011意味着什么,\ 0011没有做任何事情,\ x01也给我回复相同的响应......"没有要发送的文字"
我将"PRIVMSG"+ CHANNEL +"\ x01ACTION"+消息+"\ x01"打印到我的控制台,我将\ x01替换为当我输入/我跳舞并打开机器人时显示的同一个笑脸角色它读到控制台的内容......
我的代码很简单
if (type == MessageType.ActionMessage)
{
writer.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01");
Console.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01");
writer.Flush();
}
Run Code Online (Sandbox Code Playgroud)
writer对象不为null,并将其写入我的控制台是我可以看到会发生什么
最终的问题是,这是正确的,如果不是通过c#客户端向客户端协议CTCP显示操作的正确方法是什么
我现在一整天都在谷歌搜索,我正在寻找一种方法来写一个不同颜色的文本,就像我总是在其他irc频道上看到的那样.我想用基于CLI的irssi来实现这一点.我发现多种方法没有按预期工作.所以问题是我怎么能写这个
WHAT
Run Code Online (Sandbox Code Playgroud)
以绿色为例?我想通过简单的bash脚本实现相同的效果.所以,如果有人在过去经历过这一点,那对我有帮助.
我正在实现一个IRC机器人,因为我通过使用OpenSSL.Session连接SSL,我使用lazyRead函数从套接字读取数据.在连接的初始阶段,我需要按顺序执行几项操作:缺口协商,缺口服务器识别,加入渠道等)因此涉及一些状态.现在我想出了以下内容:
data ConnectionState = Initial | NickIdentification | Connected
listen :: SSL.SSL -> IO ()
listen ssl = do
lines <- BL.lines `fmap` SSL.lazyRead ssl
evalStateT (mapM_ (processLine ssl) lines) Initial
processLine :: SSL.SSL -> BL.ByteString -> StateT ConnectionState IO ()
processLine ssl line = do case message of
Just a -> processMessage ssl a
Nothing -> return ()
where message = IRC.decode $ BL.toStrict line
processMessage :: SSL.SSL -> IRC.Message -> StateT ConnectionState IO ()
processMessage ssl …Run Code Online (Sandbox Code Playgroud) 我正在为IRC客户端编写python代码.
我想了解IRC客户端和服务器如何相互通信.
谁能给我很好的教程或IRC通信架构来深入理解它?
谢谢