Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';“无识别响应”;及;注意--您需要通过SASL标识才能使用此服务器;尝试使用自己的Haskell机器人连接到IRC时_Haskell_Irc - Fatal编程技术网

';“无识别响应”;及;注意--您需要通过SASL标识才能使用此服务器;尝试使用自己的Haskell机器人连接到IRC时

';“无识别响应”;及;注意--您需要通过SASL标识才能使用此服务器;尝试使用自己的Haskell机器人连接到IRC时,haskell,irc,Haskell,Irc,我在Haskell wiki上使用,运行指南提供的代码时收到这两个错误 怎么了?为什么我不能连接 我正在使用Ubuntu,我试着用ghc编译它,用ghci运行它 import Network import System.IO import Text.Printf server = "irc.freenode.org" port = 6667 chan = "#tutbot-testing" nick = "tutbot" main = do h <- connect

我在Haskell wiki上使用,运行指南提供的代码时收到这两个错误

怎么了?为什么我不能连接

我正在使用Ubuntu,我试着用ghc编译它,用ghci运行它

import Network
import System.IO
import Text.Printf

server = "irc.freenode.org"
port   = 6667
chan   = "#tutbot-testing"
nick   = "tutbot"

main = do
    h <- connectTo server (PortNumber (fromIntegral port))
    hSetBuffering h NoBuffering
    write h "NICK" nick
    write h "USER" (nick++" 0 * :tutorial bot")
    write h "JOIN" chan
    listen h

write :: Handle -> String -> String -> IO ()
write h s t = do
    hPrintf h "%s %s\r\n" s t
    printf    "> %s %s\n" s t

listen :: Handle -> IO ()
listen h = forever $ do
    s <- hGetLine h
    putStrLn s
  where
    forever a = do a; forever a
导入网络
导入系统.IO
导入文本.Printf
server=“irc.freenode.org”
端口=6667
chan=“#tutbot测试”
nick=“tutbot”
main=do
h字符串->字符串->IO()
写入h s t=do
hPrintf h“%s%s\r\n”s t
printf“>%s%s\n”s t
侦听::句柄->IO()
听h=永远$do

s无识别响应的
通知指的是互联网历史深处的一个可笑的过时协议。在过去,当多用户Unix机器成为规则而不是例外时,有时服务器想要获取连接客户端上发起连接的特定用户的一些信息。为此目的创建了。我猜IRC服务器仍然包含试图查询Ident服务器的代码,但它们可能收到的响应非常少,所以您可能可以忽略此错误

SASL错误更为严重。这表明您连接到的特定IRC服务器已配置为在允许连接之前需要通过SASL协议进行用户标识和身份验证。您可能不希望将SASL支持添加到您的机器人中,从而增加复杂性

然而,我不能重复你的问题。当我运行上面发布的代码时,我连接到主机
kornbluth.freenode.net[2001:1bc0:c1::6667/6667]
,请参阅关于
无标识响应的通知
,但我的连接被接受,设置我的昵称和加入
tutbot测试频道的命令也被接受,我看到了当天的消息。我也看到一些可怜的灵魂(也许是你?)向他或她的机器人寻求帮助,但我无法响应,因为上面的tutbot代码无法发送任何命令

您是否可能使用与上面代码中的不同的
服务器
尼克
来测试它,这就是问题的原因?如果没有,则可能有一个特定的“irc.freenode.org”服务器被配置为需要SASL,而其他服务器工作正常。尝试将服务器名称切换为:

server = "kornbluth.freenode.net"
这似乎对我有用


更新:看起来freenode需要来自Amazon Web Services IP地址的SASL身份验证(如本文所述),这可以解释您遇到的问题。

无标识响应通知提到了一个来自互联网历史深处的过时协议。在过去,当多用户Unix机器成为规则而不是例外时,有时服务器想要获取连接客户端上发起连接的特定用户的一些信息。为此目的创建了。我猜IRC服务器仍然包含试图查询Ident服务器的代码,但它们可能收到的响应非常少,所以您可能可以忽略此错误

SASL错误更为严重。这表明您连接到的特定IRC服务器已配置为在允许连接之前需要通过SASL协议进行用户标识和身份验证。您可能不希望将SASL支持添加到您的机器人中,从而增加复杂性

然而,我不能重复你的问题。当我运行上面发布的代码时,我连接到主机
kornbluth.freenode.net[2001:1bc0:c1::6667/6667]
,请参阅关于
无标识响应的通知
,但我的连接被接受,设置我的昵称和加入
tutbot测试频道的命令也被接受,我看到了当天的消息。我也看到一些可怜的灵魂(也许是你?)向他或她的机器人寻求帮助,但我无法响应,因为上面的tutbot代码无法发送任何命令

您是否可能使用与上面代码中的不同的
服务器
尼克
来测试它,这就是问题的原因?如果没有,则可能有一个特定的“irc.freenode.org”服务器被配置为需要SASL,而其他服务器工作正常。尝试将服务器名称切换为:

server = "kornbluth.freenode.net"
这似乎对我有用


更新:看起来freenode需要来自Amazon Web Services IP地址的SASL身份验证(如本文所述),这可以解释您遇到的问题。

哈哈,是的,就是我。我尝试使用多个不同的服务器,每次收到相同的消息。这可能是Amazon Web服务独有的东西吗?是的,我添加了一个更新--看起来这就是问题所在。你知道如何用Haskell实现SASL吗?我不介意了解它。有
sasl
gsasl
软件包,但两个看起来都不是很好。这里不需要sasl。IRC使用PLAIN,它只是
用户名+“\0”+密码
编码为base64。要实现SASL,您必须在初始
用户
命令之前发送
CAP LS
,然后在接收到
CAP*LS:。。。sasl…
行,然后发送
验证base64(用户名+\0+密码)
和最后一个
CAP END
。哈哈,是的,是我。我尝试使用多个不同的服务器,每次收到相同的消息。这可能是Amazon Web服务独有的东西吗?是的,我添加了一个更新--看起来这就是问题所在。你知道如何用Haskell实现SASL吗?我不介意了解它。有
sasl
gsasl
软件包,但它们看起来都不是很好。你真的不需要sasl