草庐IT

double-buffering

全部标签

tcp - 使用 protobuf-net 反序列化 Protocol Buffer 时如何指定流长度?

我正在尝试使用ProtocolBuffers通过TCP连接将整数从服务器发送到客户端。我相信我的服务器正在向流中写入内容,但是当客户端尝试从网络流中反序列化时,我的代码会无限期地暂停。我的直觉告诉我,客户端不知道流的长度,所以它不知道读取何时完成,但是Deserialize方法没有长度输入,所以我不确定如何实现这个。下面是我的原型(prototype)定义、服务器和客户端的代码。原型(prototype)定义PublicClassProtoPublicClassTCPPublicPropertyCommandAsIntegerEndClassEndClass服务器代码Dimcomman

c - TCP 连接错误 "No buffer space available"

我在非常大规模(2048台机器)上测试自制分布式键值存储时遇到此错误,它在1024台机器上运行良好。通信模式是n:n,这意味着每台机器向其他机器发送大量请求。我使用CTCP套接字来实现它,SO_REUSEADDR来回收那些套接字。任何人都可以给我一些关于可能导致此错误的可能性的提示吗?代码很复杂,很难在不丢失必要逻辑的情况下将其简化并发布在这里。所以我只想知道所有可能的原因才开始调试。顺便说一句,我将设置更改为:echo8000>/proc/sys/kernel/threads-maxecho8000>/proc/sys/net/core/somaxconn#监听队列的限制,默认为12

python : Clear the buffer in Twisted Transport write

我正在使用Pythontwisted开发一个聊天应用程序。我正在使用transport.write()写入TCP流。但是,有时,我注意到客户端接收到的数据是合并的(串联的)。有什么方法可以清除缓冲区或刷新数据,以便在发送数据时接收数据而不是缓冲数据?谢谢 最佳答案 这与这个FAQ项基本相同:http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#Whyisprotocol.dataReceivedcalledwithonlypartofthedataIcalledtra

tcp - Protocol Buffer Wireshark 插件

我正在为googleprotocolbuffer寻找一个wireshark插件。我找到了这个GPBWireshark插件http://code.google.com/p/protobuf-wireshark/显然只有UDP……是否有适用于TCP的wiresharkGPB插件? 最佳答案 您可以改用Wireshark附带的Protobuf解析器。从Wireshark3.2.0开始,现在可以配置*.proto文件以更精确地解析序列化的Protobuf数据(例如gRPC)。从该版本开始支持基于UDP端口解析Protobuf数据。您还可以编

C# 对象类型转换为 byte[],通过 TCP 发送并转换回 double

我是C#编程的新手,通常处理PLC编程和HMI/SCADA系统开发。最后一个只涉及一些奇怪的C/VBS脚本。最近,在我的一个项目中,我将最初在LabVIEW中开发的SCADA系统升级/迁移到西门子WinCC应用程序。在LabVIEW项目中,有一部分负责通过TCP套接字将标签值(双值与标签名称捆绑在一起并转换为字符串)发送到另一台运行C#应用程序(TCP客户端)的PC,该应用程序正在接收字节数组并将其转换为双重值(value)。LabVIEWTCPServerExample以及在另一台PC上运行的TCPClient的部分代码。TcpClient_client;NetworkStream_

c - nodejs从C接收到的buffer分为两部分

我正在使用tcp传输数据。服务端代码用C写,客户端代码用nodejs写。当我发送一个缓冲区时,有时客户端会收到这个缓冲区的两部分,console.log函数会触发两次,但有时效果很好。以下是nodejs代码和C代码。Node代码:varclient=newnet.Socket();client.on('data',function(data){console.log('data:',data)});C代码:send(socket_file,buffer,strlen(buffer),0) 最佳答案 这是典型的TCP,毕竟它是一个面向

C# 异步 TCP 套接字 : Handling buffer size and huge transfers

当使用阻塞TCP套接字时,我不必指定缓冲区大小。例如:using(varclient=newTcpClient()){client.Connect(ServerIp,ServerPort);using(reader=newBinaryReader(client.GetStream()))using(writer=newBinaryWriter(client.GetStream())){varbyteCount=reader.ReadInt32();reader.ReadBytes(byteCount);}}注意远程主机如何发送任意数量的字节。但是,当使用异步TCP套接字时,我需要创建一

swift - “import UIKit”导致 Double-to-Int 的转换错误消失。为什么 ?

我是Swift初学者,我有一个问题。我在Xcode6-Beta3中创建了一个新的playground文件,并删除了所有默认片段自动生成。我写了以下只有一行,varx:Int=(1.234asInt)然后,这一行导致编译错误,并显示消息Playgroundexecutionfailed:error::1:20:error:'Double'isnotconvertibleto'Int'varx:Int=(1.234asInt)^在控制台输出中。我能理解这个错误,因为1.234不能转换为Int。接下来,我在varx:Int=(1.234asInt)之前又加了一行importUIKit,所以代

swift - Double 上的格式说明符

我正在尝试使用String的init(format:String,_arguments:CVarArgType…)一切都按预期工作,直到我尝试这样做:String(format:"%3f",32.6)哪个返回:32.600000我不明白为什么它不符合我想要的宽度。根据我对格式说明符的了解(我对它们的了解不是很深)你可以这样指定:%x.y其中x是返回数字的宽度(没有最终的点),y是精度(点后的位数)。例如:String(format:"%3.2",2.1)应该返回:2.10如果x比所有数字都大,它会在字符串前加上空格。哦。好的,我刚刚明白了。我只会回答我自己的问题?。

swift - SceneKit 自定义几何体产生 “double not supported”/“invalid vertex format” 运行时错误

我不明白下面的代码有什么问题:classTerrain{privateclassfunccreateGeometry()->SCNGeometry{letsources=[SCNGeometrySource(vertices:[SCNVector3(x:-1.0,y:-1.0,z:0.0),SCNVector3(x:-1.0,y:1.0,z:0.0),SCNVector3(x:1.0,y:1.0,z:0.0),SCNVector3(x:1.0,y:-1.0,z:0.0)],count:4),SCNGeometrySource(normals:[SCNVector3(x:0.0,y:0.