首页 > 解决方案 > 同一个socket的输入流和输出流怎么看?

问题描述

您好,我正在研究服务器-客户端应用程序的示例,但我不明白客户端如何从服务器接收字符串。

服务器运行一个执行此操作的线程:

String seq = generateSequence(l); //random stuff
        outSocket.println(seq);

在客户端类中有这样的代码:

 String serverSeq = inSocket.readLine();
        System.out.println(serverSeq);

inSocketoutSocket在线程和客户端类中以相同的方式实现,具有:

inSocket = new BufferedReader(new InputStreamReader(socket.getInputStream()));
outSocket = new PrintWriter(new BufferedWriter(
                        new OutputStreamWriter(socket.getOutputStream())), true);

socket同样的对象在哪里,它是客户端的套接字

我的问题是为什么serverSeq字符串正是seq字符串?服务器在输出流中写入,客户端从输入流中提取,这不是两个不同的内存区域吗?

标签: javasocketsstream

解决方案


那么问题实际上是我认为服务器的accept()函数返回客户端的套接字,但它没有,它返回一个与客户端的套接字对话的新套接字,但它们是两个不同的对象,所以在客户端和服务器中都inSocket引用outSocket到两个不同的插座不是同一个。

服务器将字符串写入其输出流,然后进入客户端的输入流,这是非常合乎逻辑的,我理解服务器正在将字符串写入客户端的输出流,这没有任何意义。


推荐阅读