gpt4 book ai didi

Java回显服务器

转载 作者:行者123 更新时间:2023-12-01 18:56:33 26 4
gpt4 key购买 nike

大家好,我正在尝试通过java做一个echo服务器,但它不起作用..我不知道为什么..但看起来服务器正在等待客户端,而客户端正在等待服务器.. ..所以他们无法互相传递信息..

这是代码对于服务器

    ServerSocket server = null;
try {
server = new ServerSocket(3333);
System.out.println("Listening on 3333");
} catch (IOException ex) {
System.out.println("Error can't connect to 3333");
System.exit(1);
}

Socket clientSocket = null;
try {
clientSocket = server.accept();
} catch (IOException ex) {
System.out.println("Accept fail");
System.exit(1);
}
PrintWriter out = null;
try {
out = new PrintWriter(clientSocket.getOutputStream());
} catch (IOException ex) {
Logger.getLogger(JavaApplication20.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch (IOException ex) {
Logger.getLogger(JavaApplication20.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

String inputLine, outputLine;
while(!(inputLine=br.readLine()).equals("bye"))
{
out.print("echo: " + inputLine);

}
out.close();
br.close();
clientSocket.close();
server.close();
System.out.println("Server Exited");

这是客户端的代码

 Socket client = null;
try {
client = new Socket("localhost", 3333);
System.out.println("Connected on 3333");
} catch (UnknownHostException ex) {
System.out.println("Couldn't connect to the server");
System.exit(1);
} catch (IOException ex) {
Logger.getLogger(KnockKnockClient.class.getName()).log(Level.SEVERE, null, ex);
}


PrintWriter out = null;
BufferedReader in = null;
BufferedReader stdIn = null;

try {
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException ex) {
Logger.getLogger(KnockKnockClient.class.getName()).log(Level.SEVERE, null, ex);
}
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
} catch (IOException ex) {
Logger.getLogger(KnockKnockClient.class.getName()).log(Level.SEVERE, null, ex);
}
stdIn = new BufferedReader(new InputStreamReader(System.in));

String fromServer, fromUser;


while((fromUser=stdIn.readLine())!=null)
{
System.out.println("From user: "+ fromUser);

out.print(fromUser);
fromServer=in.readLine();
System.out.println(fromServer);
}



out.close();
stdIn.close();
in.close();
client.close();

System.out.println("client Exited");

有什么帮助吗?

最佳答案

您正在从客户端发送一些字符串(例如“Hello”),并且您尝试在服务器上使用 readLine() 读取它(反之亦然)。 readLine() 仅在找到 EOL 字符或输入流关闭后才返回。

由于客户端没有发送任何 EOL 字符,因此服务器无限期地等待,客户端也因为等待服务器的答复而无限期地等待。

发送“Hello\n”,效果会更好。

关于Java回显服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com