-1
UPDATE:SocketTimeoutException在客户端的readLine()方法AWS
我注意到,它工作正常在Windows机器上,但它在Mac上失败。
我为套接字连接创建了一个基本的Java Server代码。它运行在AWS Linux AMI上,并通过我的电脑建立客户端连接。它适用于客户的前4-5个答案。但是,在第四或第五回答后,我没有收到服务器的任何回应,只是挂起。过了一段时间,它会给出SocketTimeout异常。
我使用setSoTimeout()在两侧设置套接字超时,并且它没有改变任何东西。我想知道它与亚马逊有什么关系。
客户端代码:
public static void main(String[] args) {
final int portNumber = 9090;
String connected = "1";
System.out.println(WELCOME);
try {
Socket socket = new Socket("ip", portNumber);
socket.setSoTimeout(0);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader input = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out.println(connected);
while (connected.equals("1")) {
//read in situation
String situation = readInSituation(socket, input).replace(DELIMETER, "\n");
System.out.println(situation);
//send option
Scanner in = new Scanner(System.in);
System.out.print("Enter option: ");
out.println(in.nextLine());
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String readInSituation(Socket socket, BufferedReader input) throws Exception {
while (!input.ready()) {
Thread.sleep(200);
}
return input.readLine();
}
服务器代码更复杂,但它所做的就是响应命令,并在屏幕上打印基本的文本。
感谢