gpt4 book ai didi

java - Socket和ServerSocket通信不清楚

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

我希望有人能澄清一个我认为我有的误解。我正在阅读 Java 上的套接字编程,但并不真正了解事物的实际流程。以下是我对以下场景的两种可能解释。
Client

  • 创建套接字实例Socket s = new Socket("server ip", 9999);
  • Server
  • 为接受通信而创建的 ServerSocket ServerSocket ss = new ServerSocket(9999);
  • 等待沟通Socket sss = ss.accept();

  • 服务器程序接受后,图表会是什么样子?

    红色箭头表示最终通信流

    服务器接受客户端后的连接会是这样吗?
    (客户端与服务器创建的套接字通信,而不是服务器套接字)

    diagram1

    或者图表看起来像这样?
    (客户端通过服务器套接字与服务器保持通信。服务器通过接受连接时创建的套接字进行通信。)

    enter image description here

    最佳答案

    套接字是两个主机(客户端和服务器)之间连接的抽象。
    建立连接后,客户端和服务器主机从套接字获取输入和输出流,并使用这些流相互发送数据。
    (阅读更多详情 here)。

    此图可能对您有所帮助。
    enter image description here

    在客户端:

  • Socket socket = new Socket("server ip", 9999);

  • 这会通过网络建立连接。
  • InputStream in = socket.getInputStream();

  • 建立连接后,从套接字连接获取输入流以读取数据。
  • OutputStream out = socket.getOutputStream();使用来自套接字连接的输出流来写入数据。

  • 在服务器上:
  • ServerSocket ss = new ServerSocket(9999);

  • 启动一个监听 TCP 套接字(服务器套接字),它绑定(bind)到已知的本地端口,监听并接受来自客户端的连接。
  • Socket socket = ss.accept();

  • 阻塞当前线程,直到客户端连接,并返回已接受连接的已连接 Socket。注意,这里它返回与客户端相同类型的 java.net.Socket。
    与客户端类似,服务器可以使用 OutputStreamInputStream从套接字写入和读取数据。

    引用 here了解更多详情。

    关于java - Socket和ServerSocket通信不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60396719/

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