gpt4 book ai didi

java - 为什么使用java套接字创建的服务器不打印从客户端发送的数据(如果客户端终止则显示)?

转载 作者:行者123 更新时间:2023-12-02 02:17:25 26 4
gpt4 key购买 nike

在下面的示例中,我创建了一个服务器,它只会打印客户端在套接字中写入的任何内容。但当客户端输入数据时我没有得到输出。如果客户端终止,那么我可以看到客户端插入输出流中的所有数据。我从客户端的控制台获取输入,然后将该数据写入服务器套接字。

服务器代码:

   public class server {
public static void main(String[] args) throws Exception {
System.out.println("waiting");
ServerSocket s = new ServerSocket(9999);
Socket stemp = s.accept();
System.out.println("read comp");
InputStream is = stemp.getInputStream();
InputStreamReader ir = new InputStreamReader(is);
BufferedReader br = new BufferedReader(ir);

while(true)
{
String str = br.readLine();
if(str!=null)
{
System.out.println(str);
}
if(str.contains("exit"))
{
break;
}
}
stemp.close();
ir.close();
is.close();
br.close();
}
}

客户端代码:

public class client {
public static void main(String[] args) throws Exception {
String ip ="127.0.0.1";
int port = 9999;
Socket s1 = new Socket(ip, port);
OutputStream os = s1.getOutputStream();
OutputStreamWriter ow = new OutputStreamWriter(os);

BufferedWriter pw = new BufferedWriter(ow);
pw.write("I am ready");
Scanner s = new Scanner(System.in);
String str = s.nextLine();
System.out.println(str);
while(!str.contains("exit"))
{
pw.write(str);
pw.flush();
str = s.nextLine();
}
pw.close();
os.close();
ow.close();
s1.close();
}
}

最佳答案

server中,使用br.readLine();,等待行尾。

在客户端,您必须在 pw.write( str + '\n' ); 中发送 eol。

关于java - 为什么使用java套接字创建的服务器不打印从客户端发送的数据(如果客户端终止则显示)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100918/

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