我必须使用java发送和接收服务器一些流。
该协议是telnet,如果我在Windows中使用cmd,使用以下命令:"telnet 10.0.1.5 9100"
,在"^AI202"
后我有响应。
代码java:
import java.io.*;
import java.net.*;
public static void main(String[] args) throws SocketException, IOException {
Socket s = new Socket();
PrintWriter s_out = null;
BufferedReader s_in = null;
String remoteip = "10.0.1.5";
int remoteport = 9100;
s.connect(new InetSocketAddress(remoteip , remoteport));
s_out = new PrintWriter( s.getOutputStream(), true);
s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String message = "^AI202";
try{
System.out.println(s_in.readLine());
}
catch(Error e){
System.out.println(e);
}
s_out.close();
s_in.close();
s.close();
}
问题是一样的:s_in
调用方法readLine()
和程序循环无限。
答案 0 :(得分:1)
问题是telnet
协议不会终止带换行符的命令。
将您的读取块更改为
try {
char [] cbuf = new char[7];
System.out.println(s_in.read(cbuf, 0, cbuf.length));
} catch(Error e){
System.out.println(e);
}
你会收到一些意见。
答案 1 :(得分:0)
我认为System.out.println(s_in.readLine());将尝试一遍又一遍地阅读它,每次失败并导致无限循环。
尝试
String line ="";
while ((line = s_in.readLine()) != null) {
// Do what you want to do with line.
}