tcp相关内容

在 TCP 流中发送消息

TCP 是基于流的,这意味着您发送的字节不一定包含在“消息"中,因此接收方可能会收到半条消息或三分之二的消息. 因此,在每条消息都是固定大小的游戏中,如果我收到消息的一部分,我可以将其保存在缓冲区中,直到收到另一部分.这有点乏味,但是还有其他基于消息的可靠协议吗?可能有,但没有像 TCP 和 UDP 那样在操作系统中实现,所以我必须使用一些库,只要它易于使用就可以了. 我总是可以制作一 ..
发布时间:2022-01-22 16:57:46 其他开发

使用 select() 监听 tcp 和 udp 消息

当我尝试此代码时,我只收到 TCP 消息: 从套接字导入 *从选择导入选择def read_tcp(s):而真:客户,地址 = s.accept()数据 = client.recv(8000)客户端.close()打印 "Recv TCP:'%s'" % 数据def read_udp(s):而真:数据,地址 = s.recvfrom(8000)打印 "Recv UDP:'%s'" % 数据定义运 ..
发布时间:2022-01-22 16:54:38 Python

多个套接字可以与 UDP 的同一端口相关联吗?

我认为多个套接字可以与同一个 TCP 端口相关联. 但是同样的事情也适用于 UDP 吗? 解决方案 在 TCP 中将多个套接字与一个端口关联的唯一方法是侦听然后接受. 这种情况下的目的是为每个传入的客户端提供一个唯一的套接字,以保持它们的字节流分开. 在 UDP 的情况下您不需要它,因为没有字节流.您可以使用单个 UDP 套接字编写整个 UDP 服务器.您只需读取,发送给 ..
发布时间:2022-01-22 16:48:21 其他开发

TCP 是在每个数据包上发送 SYN/ACK 还是仅在第一个连接上发送?

我有一个 TCP 服务器,它监听传入的客户端,然后每秒向它发送一个数据包.我想知道,SYN/ACK 数据包是否只在初始连接时发送,所以它看起来像这样: 同步确认数据数据数据 还是像这样随每个数据包一起发送? 同步确认数据同步确认数据同步确认数据 另外,如果是第一种情况,如果你只是长时间保持连接打开,UDP 优于 TCP 有什么 ..
发布时间:2022-01-22 16:36:09 其他开发

阻塞套接字:确切地说,“send()"何时执行?返回?

确切地说,BSD 套接字 send() 函数何时返回调用者? 在非阻塞模式,它应该立即返回,对吗? 至于阻塞模式,man页面说: 当消息不适合套接字的发送缓冲区时,send() 通常会阻塞,除非套接字已被置于非阻塞 I/O 模式. 问题: 这是否意味着如果内核发送缓冲区中有空间,send() 调用总是会立即返回? send() 调用的行为和性能对于 TCP 和 UD ..
发布时间:2022-01-22 16:33:05 其他开发

当 tcp/udp 服务器的发布速度快于客户端的消耗速度时会发生什么?

我试图了解当服务器发布(通过 tcp、udp 等)的速度快于客户端使用数据时会发生什么. 在一个程序中,我知道如果一个队列位于生产者和消费者之间,它会开始变大.如果没有队列,那么生产者根本无法生产任何新东西,直到消费者可以消费(我知道可能会有更多变化). 我不清楚当数据离开服务器(可能是不同的进程、机器或数据中心)并发送到客户端时会发生什么.如果客户端根本无法足够快地响应传入的数据,假 ..
发布时间:2022-01-22 16:30:55 其他开发

什么时候适合使用 UDP 而不是 TCP?

由于 TCP 保证数据包传递,因此可以被认为是“可靠的",而 UDP 不保证任何东西,数据包可能会丢失.在应用程序中使用 UDP 而不是通过 TCP 流传输数据有什么优势?在什么样的情况下,UDP 是更好的选择,为什么? 我假设 UDP 更快,因为它没有创建和维护流的开销,但如果某些数据永远不会到达其目的地,那不是无关紧要吗? 解决方案 这是我最喜欢的问题之一.UDP被误解了. ..
发布时间:2022-01-22 16:26:29 其他开发

UDP vs TCP,它快多少?

用于一般协议消息交换,可以容忍一些丢包.UDP 比 TCP 效率高多少? 解决方案 UDP 比 TCP 快,原因很简单,因为它的不存在确认包 (ACK) 允许连续的数据包流,而不是 TCP 确认一组数据包,使用 TCP 窗口大小和往返时间 (RTT) 计算得出. 更多信息,我推荐简单但非常容易理解的Skullbox解释(TCP vs. UDP) ..
发布时间:2022-01-22 16:24:58 其他开发

TypeError:无法腌制“weakref"对象

这里是多处理的新手.我有一个运行两个进程的代码.一个是不断地从服务器接收数据块并将其放入队列中,另一个是从队列中取出数据块并进行处理. 下面是我的客户端代码: 导入套接字进口龟导入多处理从多处理导入进程,队列从 tkinter 导入 *类图形用户界面:def __init__(self, master):rec_data = recv_data()self.master = 主人maste ..
发布时间:2022-01-21 12:05:09 Python

VB6 异步 Tcp 客户端截断传入的消息

我有一个向注册的 VB6 Tcp 客户端发送消息的 C# Tcp 服务器.使用 WinSock 以异步方式接收消息.因此,“完成"消息出现的 VB6 部分如下所示: Private Sub wskConnect_DataArrival(ByVal bytesTotal As Long)将 sBuff 调暗为字符串wskConnect.GetData sBuff, vbString '-- 检索发 ..
发布时间:2022-01-20 19:23:00 其他开发

tcp流重放工具

我正在寻找一种工具来记录和重放 TCP 流的一侧以进行测试.我看到了记录整个 TCP 流(服务器和客户端)以测试防火墙等的工具,但我正在寻找的是一个工具,它只记录客户端提交的流量(带有时间信息)然后重新提交它到服务器进行测试. 解决方案 由于TCP处理重传的方式,序号,SACK 和窗口化这可能比你想象的更困难. 通常人们使用 tcpreplay 进行数据包重放;但是,它不支持同步 T ..
发布时间:2022-01-19 16:45:43 其他开发

当我们说“监听端口"时会发生什么?

当我们启动一个服务器应用程序时,我们总是需要指定它监听的端口号.但是这种“监听机制"是如何在幕后实现的呢? 我现在的想象是这样的: 操作系统将端口号与某个缓冲区相关联.服务器应用程序的职责是监视这个缓冲区.如果此缓冲区中没有数据,则服务器应用程序的侦听操作只会阻塞该应用程序. 当一些数据从线路到达时,操作系统将知道然后检查数据并查看它是否针对此端口号.然后它将填充 相应的 缓冲区 ..
发布时间:2022-01-19 16:41:05 其他开发

为什么我们说 TCP/IP 套件中的 IP 协议是无连接的?

为什么IP被称为无连接协议?如果是,那么面向连接的协议是什么? 谢谢. 更新 - 1 - 20:21 2010/12/26 我认为,为了更好地回答我的问题,最好从物理上和逻辑上解释“连接"的实际含义. 更新 - 2013 年 2 月 1 日上午 2 点 - 9:59 基于以下所有答案,我觉得这里提到的“联系"应该被视为一组行动/安排/纪律.因此,它更像是一个抽象的概念 ..
发布时间:2022-01-19 16:39:59 其他开发

boost::asio 完全断开连接

有时 boost::asio 似乎在我想要它之前断开连接,即在服务器正确处理断开连接之前.我不确定这是怎么可能的,因为客户端似乎认为它完全发送了消息,但是当服务器发出错误时,它甚至没有读取消息头......在测试期间,这可能只发生五分之一,服务器收到客户端关闭消息,并干净地断开客户端. 错误:“现有连接被远程主机强行关闭" 客户端断开连接: void disconnect(){boo ..
发布时间:2022-01-19 16:39:40 C/C++开发

为什么在 TCP 中使用 bind()?为什么它只用在服务器端而不用在客户端?

我想知道 TCP 中 bind() 的确切功能.将本地地址“绑定"到套接字是什么意思?如果它为套接字分配一个端口号,那么我们为什么不在客户端使用它呢?我知道该端口是由操作系统在客户端自动分配的,但我并没有全面了解这一切是如何工作的. 在bind()之后,我们监听().绑定与listen() 有什么关系?listen() 会知道 bind() 已经执行了吗?如果是这样,bind() 会进行哪些 ..
发布时间:2022-01-19 16:39:22 其他开发

哪些书籍可以学习套接字编程和 TCP 网络通信?

我将在接下来的几个月里做一些小项目,需要一些书(最好)或 URL 来学习一些基本概念. 一般来说,一台 PC 或嵌入式设备(因项目而异)从外部硬件设备收集一些用户输入或数据,并将其传输到远程 PC,然后将其输入数据库. 后端将使用 Indy 套接字组件在 Delphi 中编码.前端可能是一台使用相同 Indy 套接字运行 Delphi 应用程序的 PC,但它可能同样是一个小型控制器板, ..
发布时间:2022-01-19 16:39:11 其他开发

如何在套接字编程中获取接收到的数据包的 tcp 标头?

我想获取每个接收到的 TCP 数据包的 TCP 头(发往特定程序,即端口)似乎不可能使用 recv() 或 recvfrom() 来使用常规套接字获取 TCP 标头. 所以,我想使用原始套接字使用原始套接字,我可以使用 recvfrom() 接收所有发往主机的 IP 数据包如果主机收到很多数据包,我需要检查每个数据包的端口号,看看是否需要它.那么这可能是非常耗费时间和 CPU 的? whi ..
发布时间:2022-01-19 16:36:54 其他开发

通过 tcp 读取嗅探数据

我正在开发应用程序,它正在侦听来自 pc 的数据并将其存储在数据库中当我尝试使用任何嗅探软件时,它会解码数据并且我可以读取它...但在我的代码中......我根本看不懂它以这样的格式出现 182226215162234181711881551821161612152094113192157204151991232141301822451045348206231225862421921742621 ..
发布时间:2022-01-19 16:31:42 C#/.NET