-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();
}
服務器代碼更復雜,但它所做的就是響應命令,並在屏幕上打印基本的文本。
感謝