cuiping43 2016-06-03 03:40 采纳率: 4.2%
浏览 1743

请问B/S结构中socket调用getInputStream方法建立从哪里到哪里的链接

比如我服务器需要向客户端传递数据,用打印流,传递参数sockt client=server.accept();
然后调用client.getOutputStream()传递参数,我可以理解为这个打印流是从服务器内存流向客户机内存
然后用BufferedReader去读取客户机内存的数据,也用client.getInputStream()传递参数

那么问题来了,为什么我客户端编写程序的时候,需要从服务器读取数据或者传递数据的时候同样地使用打印流和缓冲字符流的时候,传递的参数也是client.get()方法呢,难道客户机自己从自己内存读?为什么此处不是调用serversocket.get()方法呢?

  • 写回答

2条回答 默认 最新

  • qq_43478653 2021-03-09 12:29
    关注
    • 对于客户端Socket来说,getOutputStream()的说明如下:

    > Returns an output stream for this socket.

    因为Socket是通过Server的地址和端口创建的,所以this socket指的应该是Server的端口。

    • 对于服务器accept()得到的Socket来说,对accept()的说明如下:

    > Listens for a connection to be made to this socket and accepts it.

    意思是:监听连接在此socket上的连接,那意思是指客户机所运行的socket?我们通过accept().getRemoteSocketAddress()得到的是客户机socket所运行的ip和端口,通过getLocalSocketAddress()得到的是服务器socket所运行的ip和端口。

    由此,是不是可以推断,accept得到的socket还是建立在服务器上,只是关联了客户端?那么这样的话,accept()得到的socket().getInputStream()和getOutputStream()也是从服务器的端口读或者写的了?

    评论

报告相同问题?