当前位置: 首页 > 知识库问答 >
问题:

Socket和ServerSocket在端口使用上的区别

谢宸
2023-03-14

在服务器端,我们使用

Socket server = serverSocket.accept();

若要创建套接字,请执行以下操作。套接字创建后,我们可以创建一个新线程来处理那个套接字的输入/输出流。因此,如果有更多的连接请求进入,我们可以返回到同一端口进行侦听,并创建新的套接字。由于我们已经在一个特定的端口创建了ServerSocket,因此我们当然不能在该端口再次创建另一个ServerSocket。

我很困惑客户端是如何处理端口和套接字的,因为我在比较ServerSocket和客户端套接字。

请给我指出正确的方向,我知道我的想法不知何故是错误的。谢谢.

共有1个答案

左丘嘉木
2023-03-14

那么根据我的理解,我是否可以得出这样的结论:在服务器端,我们可以在一个端口下创建多个套接字?(与web服务器所做的类似)

你用你的术语把自己弄糊涂了。ServerSocket.Accept()接受连接,并将端点包装在套接字中。根据RFC 793的定义,端点具有与ServerSocket相同的本地端口号,因此包装Socket也具有相同的本地端口号。

实际上我的问题是,在客户端,当我们创建套接字时,我们可以指定我们想要使用的本地端口。

在本地端口成功创建客户端套接字之后,我们是否可以将该端口重用到其他客户端套接字?

没有。

端口是否一直绑定到套接字,直到套接字关闭(或端口关闭)?

没有。

 类似资料:
  • 问题内容: 在服务器端,我们使用 创建一个套接字。创建套接字后,我们可以创建一个新线程来处理该套接字的输入/输出流。因此,如果有其他连接请求进入,我们可以回到侦听同一端口并创建新套接字的方法。由于我们已经在特定端口创建了ServerSocket,因此当然不能在该端口再次创建另一个ServerSocket。 因此,以我的理解,我是否可以得出结论,在服务器端,我们可以在一个端口下创建多个套接字?(类似

  • 本文向大家介绍JAVA-NIO之Socket/ServerSocket Channel(详解),包括了JAVA-NIO之Socket/ServerSocket Channel(详解)的使用技巧和注意事项,需要的朋友参考一下 一、ServerSocketChannel Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的Server

  • 我目前有一个简单的即时消息程序,它利用Java的Socket和ServerSocket类。它按预期运行,但当我尝试关闭连接时,它没有使用4路握手TCP断开来关闭连接。相反,它使用RST数据包突然关闭连接。 关闭连接的方法是从客户端向服务器发送一个字符串,服务器将把它识别为关闭连接的命令。然后,我在服务器上使用方法,在客户端上使用方法。 使用这些类正确关闭TCP连接的正确方式和/或事件顺序是什么?

  • 问题内容: 关于Java中的serversockets,我已经看到了许多与此答案相似的答案:“假设您有一台服务器,其serversocket的端口为5000。客户端A和客户端B将连接到我们的服务器。 客户端A在端口5000上向服务器发送请求。客户端A侧的端口由操作系统选择。通常,操作系统会选择下一个可用的端口。该搜索的起点是先前使用的端口号+ 1(例如,如果操作系统最近碰到了我们的端口45546,

  • 服务器: 客户: 服务器开始侦听: 每个客户端连接将获得一个单独的套接字进行通信,所有的套接字都使用相同的服务器端TCP端口进行通信。

  • 问题内容: 当使用Socket类时,它正在某个端口上建立与服务器的TCP连接,但是ServerSocket能够在服务器上为每个接受请求处理多个客户端连接,并将其委托给线程来处理该请求。但是ServerSocket类如何在同一个端口上接受多个tcp连接。 这是否意味着要由操作系统来决定它允许多少个连接,或者允许的最大积压量是多少,并且可以由OS之上的应用程序控制(我的意思是Java受OS支持的最大积