【发布时间】:2013-08-20 17:27:05
【问题描述】:
我目前正在开发一个用 Java 编写的 IRC 客户端。
一旦与服务器建立连接,我就会发送这些消息:
- /NICK 测试
- /加入#chat
第一次测试非常顺利 - 服务器正在响应。但每次都说:
- 注意授权:***
- 检查身份
- 注意授权:***
- 没有 Ident 响应
- 错误:正在关闭链接...(注册超时)
我找到了一个related question,它有点帮助。它说我需要在端口 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()));
}
}
在执行时我只显示这个:
等待传入的套接字
我是否需要发送一些其他消息以避免身份检查?
【问题讨论】: