1
我目前正在研究用Java编写的IRC客户端。IRC:无身份响应
只要与服务器的连接建立我发送这些消息:
- /NICK测试
- /JOIN #chat
第一次测试就相当好 - 服务器正在响应。但每一次,它说:
- 注意AUTH:***
- 检查订货号
- 注意AUTH:***
- 没有身份确认
- 错误:关闭连接... (注册超时)
我发现了一个related question使得h稍微上了一点。它说我需要在端口113上侦听连接,并从IRC-Server接收和响应消息。我实现了一个侦听该端口的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()));
}
}
在执行时我只得到这样显示:
等待传入插座
我需要把一些其他的消息,以避免身份检查?
我试过你的第一行('USER [email protected]:ytrezq')并得到了':morgan.freenode.net 461 * USER:没有足够的参数' – user2284570
那个“foo”有用户,这些时期实际上是争论。例如,如果我想成为“[email protected]”,那么后面跟着“NICK zaphod”,例如“USER prez。:Zaphod Beeblebrox” –