Я работаю над проблемой, которая создаст TCP-сервер и клиента с использованием сокетов.Для клиентского кода моя цель состоит в том, чтобы неоднократно предлагать пользователю ввести предложение S, отправить предложение S на сервер, получить ответ от сервера и отобразить полученное сообщение и время прохождения туда и обратно, выраженное в миллисекундах.На сервере моя цель - создать сокет TCP-сервера, дождаться подключения клиента, получить сообщение, отобразить его с IP-адресом и номером порта клиента, использовать заглавные буквы, отобразить сообщение и вывести ответсообщение с заглавной буквы.
Я пытаюсь использовать некоторое время (! (input.equals ("done") {... сделать что-то}, однако все, что я делаю, застревает в бесконечном цикле.Я надеюсь, что это что-то простое, я просто пропускаю, но я не вижу этого.
TCPServer.java
import java.net.*;
import java.io.*;
public class myFirstTCPServer {
public static void main(String[] args) throws IOException {
int servPort = 4999;
ServerSocket Sy = new ServerSocket(servPort);
Socket servSocket = Sy.accept();
InputStreamReader in = new InputStreamReader(servSocket.getInputStream());
BufferedReader bf = new BufferedReader(in);
String str = bf.readLine();
while (!(str.equals("done"))){
System.out.println("client connected");
InetAddress address = InetAddress.getLocalHost();
String ip = address.getHostAddress();
System.out.println("IP: " + ip);
System.out.println("Port: " + servPort);
System.out.println("Message from client: " + str.toUpperCase());
PrintWriter pr = new PrintWriter(servSocket.getOutputStream());
pr.println(str);
pr.flush();
}
servSocket.close();
}
}
TCPClient.java
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class myFirstTCPClient {
public static void main(String[] args) throws IOException {
String S;
Scanner input = new Scanner(System.in);
System.out.println("Enter a sentence");
S = input.nextLine();
Socket clntSocket = new Socket(InetAddress.getLocalHost(), 4999);
while (!(S.equals("done"))){
double sent = System.nanoTime();
PrintWriter pr = new PrintWriter(clntSocket.getOutputStream());
pr.println(S);
pr.flush();
InputStreamReader in = new InputStreamReader(clntSocket.getInputStream());
BufferedReader bf = new BufferedReader(in);
String str = bf.readLine();
System.out.println("Message from server: " + str);
double received = System.nanoTime();
double total = received - sent;
System.out.println("Round Trip Time: " + (total/1000000.0));
}
clntSocket.close();
}
}