java为什么readLine()会导致InputStreamReader出现未定义的错误?
我正在用Java创建一个简单的IRC客户端。尝试使用BufferedReader中包装的InputStreamReader从服务器读取数据流时遇到问题。我发现的示例都使用readLine()方法来捕获数据。然而,当我使用这种方法时,我收到了以下错误:
readLine() is undefined for the type InputStreamReader
错误首先出现在我的while
循环中。以下是代码:
public class IRCClient {
//Initialize the input and output streams
private Socket socket = null;
private InputStreamReader reader = null; //What we receive from the host
private OutputStreamWriter writer = null; //What we send to the host
//Client constructor
public IRCClient(String address, int port, String nick, String login, String channel) {
//Establish a connection to the host
try
{
socket = new Socket(address, port);
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
}
catch(UnknownHostException u)
{
System.out.println(u);
}
catch(IOException i)
{
System.out.println(i);
}
//Login to the host
try
{
writer.write("NICK " + nick + "\r\n");
writer.write("USER " + login + "\r\n");
writer.flush();
}
catch(IOException i)
{
System.out.println(i);
}
//Read lines from the server to make sure we are connected
String line = null;
try
{
while ((line = reader.readLine()) != null) {
if (line.indexOf("004") >= 0) {
// We are logged in
break;
} else if (line.indexOf("433") >= 0) {
System.out.println("Nickname is already in use");
return;
}
}
} catch (IOException i) {
System.out.println(i);
}
// Join the specified channel
writer.write("JOIN " + channel + "\r\n");
writer.flush();
// Keep reading lines from the host.
while ((line = reader.read()) != null) {
if (line.toLowerCase().startsWith("PING ")) {
//Respond with PONG tro avoid being disconnected
writer.write("PONG " + line.substring(5) + "\r\n");
writer.flush();
}
else {
//Print the line received
System.out.println(line);
}
} //end while
}
//Instantiate the client object
public static void main(String[] args){
//Connection details
String serverAddress = "irc.chat.twitch.tv";
int serverPort = 6667;
String nick = args[0];
String login = args[1];
String channel = args[2];
IRCClient client = new IRCClient(serverAddress, serverPort, nick, login, channel);
} //end main
} //end class
共 (0) 个答案