草庐IT

TCP_CORK

全部标签

linux - TCP 消息框架 + recv() [linux] : Good conventions?

我正在尝试在Linux上创建一个p2p应用程序,我希望它尽可能高效地运行。我遇到的问题是管理数据包。正如我们所知,recv()缓冲区中随时可能有多个数据包,因此需要某种消息框架系统来确保多个数据包不会被视为一个大数据包。所以目前我的数据包结构是:(u16intPacketLength):(PacketData)这需要调用两次recv();一种获取数据包大小,一种获取数据包。这有两个主要问题:1.Amaliciouspeercouldsendapacketwithasizeheaderofsomethinglarge,butnotsendanymoredata.Theapplicatio

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

我有一个C#Tcp服务器,它向注册的VB6Tcp客户端发送消息。消息的接收是使用WinSock以异步方式完成的。所以出现“完成”消息的VB6部分如下所示:PrivateSubwskConnect_DataArrival(ByValbytesTotalAsLong)DimsBuffAsStringwskConnect.GetDatasBuff,vbString'--RetrievesentvalueProcessMessagesBuff'--ProcessthevalueEndSub问题是C#Tcp服务器正在发送一个长度为6874的字符串,但是当我们检查DataArrival事件触发时接

tcp - Fiddler2 仅适用于 tcp

希望您能帮忙...有没有办法让Fiddler2只监视tcp流量而不是寻找HTTP?我有一个发送TCP文本的遗留应用程序,需要捕获它以跟踪问题。Fiddler2非常适合基于Web的http监控,如果可能的话,我也想将它用于基于TCP的监控(我理解布局和格式)..这可能吗,还是我需要看看WireShark或类似的东西?谢谢! 最佳答案 正如Fiddler网站上所解释的,Fiddler是一个HTTP/HTTPS代理服务器。你不能用它来调试TCP;使用MicrosoftNetworkMonitor或Wireshark完成这些任务。

c++ - TCP 库正在捆绑消息?

我正在使用一个带有名为Lacewing的服务器和客户端类的TCP库http://lacewing-project.org/我注意到,当我向客户端发送多个单独的消息时,它有时会将它们捆绑在一起,而我可以将它们分开的唯一方法是再次解析它们。发送二进制数据时,虽然很难解析。有谁知道它为什么会这样做?我在客户端和服务器上都尝试了DisableNagling(),但它仍然可以。这是我可能会发送的内容的示例:voidServerCore::loginRequestC(conststd::string&userName,conststd::string&password){std::coutTag;

java - 是否可以使用 java 或 python 中的应用程序与 WCF TCP 服务进行通信?

我收到一个WCF服务进行通信,因此,我需要在java或python中创建一个客户端来获取此服务提供的信息,该服务是一个WCFTCP服务。可能吗? 最佳答案 我假设当您说该服务“是WCFTCP服务”时,您的意思是它使用了netTcpBinding(方案net.tcp)。除了SOAP等公共(public)标准之外,此绑定(bind)还依赖于一些专有的Microsoft协议(protocol)。它们提供消息框架,支持各种编码方案,以及消息流上的安全协议(protocol)分层。这类似于netNamedPipe绑定(bind),并且解释了这

linux - TCP内核实现

我开发了一种新的TCP拥塞避免算法,我想在linux内核中实现它并测试它的性能。但是为此我需要了解现有的TCP内核(2.6)实现。你如何建议我应该继续这个?请推荐一些文章/书籍等,这可以让我有一个良好的开端。我知道我最终将不得不深入研究源代码,但如果我至少了解广泛的实现方面以及如何浏览代码,那将会很有帮助。 最佳答案 我只想直接研究内核中已有的更简单的拥塞避免算法的源代码。它们位于net/ipv4目录中,并且tcp_vegas.c评论非常详尽。您可能还希望查看tcp_highspeed.c和tcp_bic.c因为它们相当简单(少于2

networking - 玩 tcp/ip

我想学习和使用python、java或c++的tcp/ip库。但是我只有一台电脑。是否可以“伪造”远程计算机来模拟远程主机,在NAT下结束一切? 最佳答案 最简单的方法是在同一台计算机上同时运行服务器和客户端,并使用“环回”IP地址:127.0.0.1,它始终连接到本地主机。我在测试期间做过很多次。例如,在端口NNN上运行本地网络服务器,然后在浏览器中输入http://127.0.0.1:NNN/事实上,127.X.Y.Z应该总是与本地机器对话。 关于networking-玩tcp/ip

flash - Actionscript TCP 套接字无法为某些人发送消息

我编写了一个套接字服务器,它使用Socket类与我的actionscript3flash游戏进行通信。这是一个TCP连接,我认为这意味着100%确定发送的消息将被服务器接收,因为这是在低级别完成的。因此,如果发送失败,它将重新发送消息。对于我和我测试过我的构建的另外两个人来说,情况确实如此。然而,对于一个人来说,有时(罕见但不可忽视)服务器没有收到消息,即使这似乎不会发生在其他人的系统上。然而,这个人在玩其他专业多人游戏时从未遇到过任何问题,这意味着这一定是我的构建问题。我能做些什么来确保消息被正确发送,我关于TCP100%安全的说法是错误的吗,因为消息应该在低级别失败时重新发送?

embedded - 保证 TCP 数据包大小

我们使用嵌入式设备通过串行到以太网转换器将数据包从串行端口发送到服务器。我们使用的一家制造商Moxa将始终以与构建它们相同的方式发送数据包。意思是,如果我们构建一个大小为255的数据包,它将始终以255长度发送数据包。另一家厂商Tibbo,如果我们发送包大小为255,如果大于128,它会打散数据包。这是我当时从Tibbo工程师那里得到的答复:"FromwhatIunderstandandwhattheengineerssaid,eveniftheotherdevicesprovideyouwiththerightpacketsizenowdoesnotguaranteethatwhen

C - 填充 TCP 套接字发送缓冲区

我正在尝试编写一个实验性的客户端/服务器程序来证明当发送缓冲区已满时写入是否失败或阻塞。基本上,我在发送程序上有一个无限循环,我使用select()检查我是否可以在缓冲区上写入(我认为这意味着套接字缓冲区未满),如果我可以在缓冲区上写入比我写()一个字符。当FD_ISSET(sockfd,&writefds)为false时,循环中断(我无法写入缓冲区,因为它已满)。接收程序在开始read()之前休眠一分钟。我希望发送者在此休眠时间内填充缓冲区,但事实上,程序永远不会结束。发件人:intmain(intargc,char*argv[]){charbuffer[100];intsockfd