tcp - 使用 tcp 为数据包发送数据包

我想将 tcp 用于数据包,而不是流,但它可以同时发送吗?我会得到带有独立缓冲区的新独立套接字吗?我的意思是这样一种情况,即两台计算机尚未完成旧数据包的发送,但有人已经想发送一个新数据包。据我所知,套接字它是一对 ip 和端口。我可以有两个相同的插座吗?

回答1

看来您对 Sockets 和 TCP 有一些概念上的错误,但很难从您所写的内容中弄清楚您真正在想什么。所以我只会对你的问题给出字面的答案,然后让你弄清楚你误解了什么。

我想将 tcp 用于数据包,而不是流,

TCP 是面向流的。如果您想使用它们发送数据包/消息,您需要使用使用 TCP 作为其传输的应用程序级协议来执行此操作。

但它可以同时发送吗?

目前尚不清楚您所说的同时发送是什么意思。发送是做什么的?电脑?流程?线程?在什么意义上是同时的。

我会得到带有独立缓冲区的新独立套接字吗?

每次连接时,都需要一个新的套接字。每个 Socket 都有一个用于发送的缓冲区和一个用于接收的缓冲区。

我的意思是这样一种情况,两台计算机还没有完成旧数据包的发送,但有人已经想发送一个新数据包。

目前尚不清楚您要在这里说什么。

由于每个 TCP 连接都由一个套接字表示,并且您(显然)有两个客户端(计算机)与第三个客户端通信。客户端将有两个单独的套接字,在 werver 端将有两个。所有 4 个套接字都有缓冲区,总共 8 个。

但是,如果您谈论的是两个客户端(“发送者”)在单个 TCP 连接上与同一服务器通信,则 TCP 协议不支持。要做到这一点,两个客户端实际上需要是同一个进程,并且他们需要与进程协调以共享单个(客户端)Socket。服务器端也需要知道。

据我所知,套接字是一对 ip 和端口。我可以有两个相同的插座吗?

您可以有多个套接字连接不同的客户端/服务器对。甚至是同一对。

但是,它们将不相同。每个活动套接字必须根据 IP 和端口号进行区分。否则,TCP 实现将无法将从网络接收到的数据发送到正确的套接字。

相似文章

随机推荐

最新文章