gpt4 book ai didi

java - 服务器-客户端JAVA套接字编程错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:52 25 4
gpt4 key购买 nike

我是套接字编程的新手,想要创建一个发送数字的客户端,服务器返回客户端发送的数字的倍数。我先运行服务器,然后运行客户端。我正在输入值,但没有从服务器得到任何响应。以下是我的客户端和服务器代码。

服务器代码

try
{
ServerSocket ss=new ServerSocket(4000);
while(true)
{
Socket sock=ss.accept();
InputStreamReader isr=new InputStreamReader(sock.getInputStream());
BufferedReader br=new BufferedReader(isr);
String num=br.readLine();
try
{
int n=Integer.parseInt(num);
n=n*2;
String ret=String.valueOf(n);
PrintWriter writer=new PrintWriter(sock.getOutputStream());
writer.println(ret);
writer.close();
}
catch(IOException ex)
{
System.out.println("Enter a number!");
}
}
}
catch(Exception ex)
{
System.out.println("Error");
}

客户端代码

try
{
Socket s=new Socket("127.0.0.1",4000);
String st;
PrintWriter pw=new PrintWriter(s.getOutputStream());
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
InputStreamReader is=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(is);
st=in.readLine();
pw.println(st);
st=br.readLine();
System.out.println("the server says: "+ st);
}
catch(IOException ex)
{
ex.printStackTrace();
}

请建议应遵循的步骤,因为我没有从服务器获得任何输出。

最佳答案

问题在于这部分客户端代码,它通过 pw 发送 st,然后声明 st 是服务器的输出。

pw.println(st);
System.out.println("the server says: "+ st);

您应该能够解决通过 br 从服务器实际获取值的问题。您还需要刷新pw:

pw.println(st);
pw.flush();
st = br.readLine();
System.out.println("the server says: "+ st);

或者,您可以使 pw 自动刷新,如下所示:

PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
// ...
pw.println(st);
st = br.readLine();
System.out.println("the server says: "+ st);

关于java - 服务器-客户端JAVA套接字编程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795829/

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