IRC:没有识别响应



我目前正在开发一个用Java编写的IRC客户端。

一旦建立了与服务器的连接,我就会发送以下消息:

  • /NICK测试
  • /加入#聊天

第一次测试进行得很顺利,服务器正在响应。但每次它都说:

  • 通知授权:***
  • 检查标识
  • 通知授权:***
  • 无识别响应
  • 错误:正在关闭链接。。。(注册超时)

我发现了一个相关的问题,这有点帮助。它说我需要在端口113上侦听连接和从IRC服务器接收和响应的消息。我实现了一个在该端口上侦听的ServerSocket,但服务器没有尝试在端口113上打开连接。我做错了什么?

这是代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class IdentProtocolThread extends Thread {
private String nick;
private ServerSocket serverSocket;
private BufferedReader reader;
private BufferedWriter writer;
public IdentProtocolThread(String nick) throws IOException {
    this.nick = nick;
    this.serverSocket = new ServerSocket(113);
}
@Override
public void run() {
    try {
        System.out.println("waiting for incoming socket");
        Socket socket = this.serverSocket.accept();
        System.out.println("socket accepted");
        this.initialize(socket);
        System.out.println("reader/writer initialized");
        String line = null;
        while ((line = this.reader.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("done");
}
private void initialize(Socket socket) throws IOException {
    this.reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    this.writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
}
}

在执行时,我只显示以下内容:

等待传入套接字

我需要发送一些其他信息来避免身份检查吗?

看看这个问题,了解对底层IRC协议的参考;它比您在客户端中看到的/命令更有结构。握手通常看起来像这样:

<< USER foo . . :real name
<< NICK bar
>> :server PING somethinglonghere
<< PONG :somethinglonghere
>> :server 001 bar :Welcome!
<< JOIN #channel
>> :bar!foo@yourhost JOIN #channel
>> :server 332 bar #channel :channel topic
>> :server 353 bar = #channel :@someop +somevoice someuser anotheruser
>> :server 366 bar #channel :End of /NAMES list

其中CCD_ 2指示发送到服务器的文本行,而CCD_。还要注意,IRC名义上使用rn行结尾,尽管许多服务器也会接受n

最新更新