我正在研究一个将使用套接字创建 TCP 服务器和客户端的问题。对于客户端代码,我的目标是反复提示用户输入句子S,将句子S发送到服务器,接收服务器的响应,并显示接收到的消息和以毫秒表示的往返时间。在服务器上,我的目标是创建一个 TCP 服务器套接字,等待客户端连接,接收消息,用客户端的 IP 地址和端口号显示它,将消息大写,显示消息,然后回显“大写”的消息。
我正在尝试使用 while (!(input.equals("done"){ ...do something },但是,无论我做什么都会陷入无限循环。我希望它是我忽略的简单东西,但是我没看到。
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();
}
clntSocket.close();
}
}
幕布斯7119047
相关分类