Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)

这篇具有很好参考价值的文章主要介绍了Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们经常看到说,TCP 是一对一的两点服务,UDP 支持一对一、一对多、多对多的交互通信。但是使用Tcp工具通讯时,一个Tcp服务端可以连接多个Tcp客户端。所以这里的一对一和一对多是不是冲突了?

并不是。一对一指的是Tcp连接,什么是Tcp连接,这里直接粘贴小林大神的解释。
Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)
这些控制信息的组合可以称为连接。那么一对一的意思就是一个控制信息的组合只能针对一个Tcp客户端。

那么Tcp工具是如何实现一对多的通讯的呢?

Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)
我这里使用工具建立了一个TCP服务端(5679)和两个TCP客户端(6159和6259)。
网上我看有人解释这个问题是,说是tcp服务端处理多个连接时,内部又创建了新的端口来处理。错!!!我们看下windows上tcp套接字信息就知道了
Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)
这里套接字指的是如通信对象的 IP 地址、端口号、通信操作的进行状态等信息。 图中一行相当于一个套接字。为什么需要套接字概念,讲到一对多的实现时就知道了。

可以看到tcp服务端的端口一直都是5679,并没有其他端口显示,所以tcp服务端一直只有一个端口!!!

那tcp服务端是如何处理多用户的连接的呢?

先说结论,服务端的Socket程序做了处理。所以TCP是一对一,Socket实现了一对多

服务端的socket程序分成两个模块,即等待连接模块和负责与客户端通信的模块 。当服务器程序启动并读取配置文件完成初始化操作后,就会运行等待连接模块。这个模块会创建套接字,然后进入等待连接的暂停状态。接下来,当 客户端连发起连接时,这个模块会恢复运行并接受连接,然后启动客户端通信模块,并移交完成连接的套接字。接下来,客户端通信模块就会使用已连接的套接字与客户端进行通信,通信结束后,这个模块就退出了。
Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)
Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)
在复制出一个新的套接字之后,原来那个处于等待连 接状态的套接字会怎么样呢?其实它还会以等待连接的状态继续存在,当再次调用 accept,客户端连接包到 达时,它又可以再次执行接受连接操作。接受新的连接之后,和刚才一样,协议栈会为这个等待连接的套接 字复制一个新的副本,然后让客户端连接到这个新的副本套接字上。

更详细的原理见下图
Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)
非常建议去看《网络是怎样连接的》。其他不说了有问题可以多交流。文章来源地址https://www.toymoban.com/news/detail-402350.html

到了这里,关于Tcp server是如何一个端口处理多个客户端连接的(一对一还是一对多)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • tcp服务器端与多个客户端连接

    如果希望Tcp服务器端可以与多个客户端连接,可以这样写: 相关的槽函数中: 使用sender()来获取对应的QTcpSocket对象。 其实,主要就是QTcpServer进行监听: 客户端的QTcpSocket与服务器端的QTcpSocket进行通信。

    2024年04月28日
    浏览(27)
  • TCP流套接字编程(模拟多个客户端与服务器交互)

    目录 一、ServerSocket API 1.1、ServerSocket构造方法 1.2、ServerSocket方法 二、Socket API  2.1、socket构造方法  2.2、socket方法 三、TCP 中的长短连接 四、示例  实现聊天室功能 五、存在的问题  ServerSocket 是创建TCP服务端Socket的API。 1.1、ServerSocket构造方法 方法签名 方法说明 ServerSocket

    2024年02月13日
    浏览(31)
  • Golang TCP/IP服务器/客户端应用程序,设计一个简单可靠帧传送通信协议。(并且正确处理基于流式控制协议,带来的应用层沾帧[沾包]问题)

    在 Golang 语言标准库之中提供了,对于TCP/IP链接、侦听器的高级封装支持,这易于上层开发人员轻松基于这些BCL(基础类库)实现期望的功能。 TCP/IP链接(客户端) net.Conn 接口 TCP/IP侦听器(服务器) net.Listener Golang 提供了易用的写入数据到远程(对端)实现,而不比像 C/C

    2024年01月24日
    浏览(40)
  • C# 解决TCP Server 关不掉客户端连接的问题

    拷贝了一段 TCP Server的应用代码,第一次运行正常,但是关闭软件或者实现disconnect+close后都无法关闭端口连接。 关闭之后,另外一个客户端还在正常与PC连接。 TCP Server 重新运行,无法接收到客户端的连接。 1、 C#  .net界面程序 2、 .net 4.8.1 3、 System.Net.Sockets 4、 TcpListener 接

    2024年02月15日
    浏览(31)
  • java socket Server TCP服务端向指定客户端发送消息;可查看、断开指定连接的客户端;以及设置客户端最大可连接数量。

    首先需要知道java里如何创建一个Socket服务器端。 提示:注意server.accept()方法调用会阻塞,只有新的客户端连接后才返回一个新的socket对象。如果一直未连接那么会一直处于阻塞状态 了解了如何创建一个socket服务器端后。那么如何实现给指定的连接客户端发送消息呢?首先我

    2024年02月11日
    浏览(40)
  • 网络编程:编写一个TCP客户端与服务端

    用的系统是Ubuntu。 socket用来创建套接字。这个函数服务端与客户端都要使用。 第一个参数用来制定地址族规范,比如 AF_INET(PF_INET) 表示IPv4地址, AF_INET6(PF_INET6) 表示IPv6地址。 第二个参数用来制定套接字的类型规范,如 SOCK_STREAM 表示面向连接的套接字, SOCK_DGRAM 表示面

    2024年02月01日
    浏览(34)
  • EPOLL单线程版本 基于reactor 的 httpserver文件下载 支持多个客户端同时处理

    之前写了一个httpserver的问价下载服务器    如果有多个客户端请求过来只能串行处理必须得等当前的操作完成之后才会处理    另外还存在 文件大的时候 会出错 处理不了  原因就是 sendfile是在一个while循环中处理的   当调用send失败返回-1之后 就  结束了   而一般来讲 

    2024年02月07日
    浏览(41)
  • powershell 接收一个端口tcp数据复制转发到多个目的

    在 PowerShell 中,你可以使用  New-Object  来创建  System.Net.Sockets.TcpListener  和  System.Net.Sockets.TcpClient  对象,从而接收一个 TCP 端口的数据并将其转发到多个目的地。下面是一个 PowerShell 脚本示例,该脚本展示了如何从一个 TCP 端口接收数据并将其复制到多个目标地址: 在这个

    2024年02月21日
    浏览(28)
  • 网络通信/QTcpSocket/实现一个可在子线程中发送和接收数据的TCP客户端

    近来一直接使用WinSocket做网络编程,有很长一段时间不再使用Qt框架下的相关网路通信类。有不少之前积压的问题直到现在也没怎么弄清楚,在CSDN中乱七八糟的存了好几篇草稿,亟待整理。最近要写一个简单地相机升级程序,于是重操旧业。 网络通信中,尤其是在收发工作较

    2024年02月08日
    浏览(39)
  • frp客户端连接出现报错:login to server failed: dial tcp x.x.x.x:7000: i/o timeout

    如题,我在使用vps+frp实现内网穿透时客户端遇到了如上错误,在这里写一篇博客记录一下。 报错截图如下: 出现这个错误后我首先检查了我服务器端和客户端的配置文件,都没有发现什么问题,之后我就去网上去查,可能是我看的不够多但我确实没在网上找到一篇体现该报

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包