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()也是从服务器的端口读或者写的了?

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配