我正在尝试将我的PHP脚本连接到IRC,但它会保持超时.我在服务器上,所以我知道它已启动并运行,我无法分辨出问题所在.
这可能是我的代码中的错误吗?
<?php
/**
* Configuration.
* Pretty self-explanatory
*/
$ircServer = "hub.malvager.com";
$ircPort = "6667";
$ircChannel = "#hackforums";
set_time_limit(0);
$ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS);
if ($ircSocket)
{
fwrite($ircSocket, "USER Orgy orgy.test hfcoder :twBooter\n");
fwrite($ircSocket, "NICK OrgyBot|" . rand() . "\n");
fwrite($ircSocket, "JOIN " . $ircChannel . "\n");
while(1)
{
while($data = fgets($ircSocket, 128))
{
echo nl2br($data);
flush();
// Separate all data
$exData = explode(' ', $data);
// Send PONG back to the server
if($exData[0] == "PING") …Run Code Online (Sandbox Code Playgroud) 首先,请告诉我,如果我不允许在这里询问这个协议......这似乎是最好的地方.对不起,如果我错了.
因此根据维基百科,USER消息如下所示:
USER username hostname servername :realname
Run Code Online (Sandbox Code Playgroud)
hostname和servername之间有什么区别?谢谢.
public static string SERVER = "irc.rizon.net";
private static int PORT = 6667;
private static string USER = "Test C# Irc bot";
private static string NICK = "Testing";
private static string CHANNEL = "#Test0x40";
public static void Main(string[] args)
{
NetworkStream stream;
TcpClient irc;
StreamReader reader;
StreamWriter writer;
irc = new TcpClient(SERVER, PORT);
stream = irc.GetStream();
reader = new StreamReader(stream);
writer = new StreamWriter(stream);
writer.WriteLine("NICK " + NICK);
writer.Flush();
writer.WriteLine("JOIN " + CHANNEL);
writer.Flush();
Console.ReadKey(true);
}
Run Code Online (Sandbox Code Playgroud)
为什么我的IRC机器人没有连接?
经过一些谷歌搜索,一个明显的答案或Java IRC机器人的起点没有出现,我的问题; 是否有一个现有的框架来帮助我建立一个IRC机器人?如果不这样做,这是否可以使用Java中的套接字执行此操作,并且有人在网络上看到过一个例子吗?
欢呼的家伙.
我正在用C++编写一个IRC客户端,目前我遇到了一个问题,退出后,我做了:
Send("QUIT :Quit\r\n"); // just an inline, variadic send() wrapper
shutdown(m_hSocket, SD_BOTH);
closesocket(m_hSocket);
WSAShutdown();
但是,问题是没有发送QUIT消息.我嗅到了来自客户端的数据包,实际上这条消息从未发送过.我认为这是套接字没有被刷新的问题,但我不知道如何做到这一点,谷歌建议禁用Nagle算法,但我怀疑这是一个好习惯.
提前致谢.
我有一个命令,我想只限制某些等级.我正在使用unreal3.2.6 IRC.
我看了这个: 
但我仍然不确定我能做些什么来检查用户排名.
我想看看用户是否是"语音"或更高.什么可以查找用户,我该怎么做才能检查他们是否是一个声音或更高的声音?为了让我检查,每个等级的价值是多少?
我只是想检查当前的频道,而不是整个IRC服务器.
例如:
当用户尝试执行命令!roll (Rolls a dice)而不是语音或更高级别时,不会发生任何事情.
if (data.Equals("!roll"))
{
//Check if user contains (@,+,etc?)
if(nickname.StartsWith(@..+..etc))
{
roll(nickname);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用node.js脚本来模拟按键,例如向上箭头或按钮.具体来说,我正在尝试克隆Twitch Plays Pokemon.基本上,每当通过IRC发送命令(向上,向下,向左,向右,a,b,选择,开始)时,服务器模拟按键,按键控制游戏模拟器.到目前为止,我已经用node.js的IRC模块编写了这个:
var config = {
channels: ["#tron"],
server: "irc.freenode.net",
botName: "wyatt"
};
var irc = require("irc");
var bot = new irc.Client(config.server, config.botName, {
channels: config.channels
});
var commandHandler = function(from, text) {
if(text.toLowerCase() === "up"||text.toLowerCase() === "down"||text.toLowerCase() === "left"||text.toLowerCase() === "right"||text.toLowerCase() === "a"||text.toLowerCase() === "b"||text.toLowerCase() === "select"||text.toLowerCase() === "start") {
bot.say(config.channels[0], from.toUpperCase() + " sent the " + text.toUpperCase() + " command!");
} else {
bot.say(config.channels[0], from.toUpperCase() + ", that wasn't a valid command!");
}
}; …Run Code Online (Sandbox Code Playgroud) 我最近意识到IP多播(显然在公共互联网上效果不佳)和应用程序多播(根据http://en.wikipedia.org显然在IRC和PSYC中使用)之间存在区别./ wiki/Multicast).
有没有关于实现应用程序级多播的好教程?
我认为组播的重点是减少普通网段的带宽,因此我很难理解应用级组播的作用.
我看过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:但它似乎只是挂起而没有正确重新连接..
提前感谢您的帮助