草庐IT

recv_data

全部标签

tcp - UDP 与 TCP : sending small data

我需要为每个Wifi发送两个double值和一个整数值。我每秒需要大约25个数据包。如果其中之一迷路了也没问题。但这种情况永远不会发生,即25人中有10人迷路。这可能吗?您推荐使用什么?UDP还是TCP? 最佳答案 Wifi中丢包的概率实际上取决于很多因素:设备、与接入点的距离、对等点的事件等等。40%的数据包丢失(10/25)相当极端,但可能会在正确(实际上:错误)的设置下发生。您没有提到对您的系统使用TCP会产生什么影响。开销是个问题吗?如果不是-我建议使用TCP,直到证明需要额外的性能提升,然后才考虑转向UDP。避免“过早优化

python - socket.recv() 什么时候引发异常?

我正在使用阻塞套接字,我对recv()很困惑,因为我没有找到任何关于它的合适文档。官方的似乎仅限于我。另一件让我感到困惑的事情是互联网上的人(以及这个网站上的人)说它不会引发任何阻塞套接字的异常,但它只是一直在等待。如果我粗暴地关闭服务器,它会抛出Errno10054(socket.error)。 最佳答案 简单来说,recv会在底层socket操作失败时抛出异常。问题在于它取决于您所使用的操作系统。在这里我可以猜到你在Windows上,因为10054是一个Windowserrorcode用于连接重置。幸运的是,套接字操作失败的时间

带有 WinSock2 的 VBA : send() sends wrong data

我正在尝试在VBA中使用WinSock2从本地主机TCP流发送(以及稍后接收)数据。目前,我主要尝试从此处复制客户端示例,https://msdn.microsoft.com/en-us/library/windows/desktop/ms738630(v=vs.85).aspx我的代码“几乎”可以工作;我可以创建一个套接字并建立到我的服务器的连接。不过,发送数据(例如调用ws2_32.dll的send()函数)很奇怪。在下面的示例中,服务器确实会收到一个长度为10的字节数组,但其内容是奇数。数组的前4个字节已设置(但随每次调用而变化),后6个字节始终为0。我不太确定发生了什么;假设我

c - recv 阻塞直到发送第二个数据包

我正在使用recv方法在WindowsCE6.1系统上通过TCP接收数据。出于某种原因,第一次调用recv有时会阻塞,直到发送下一个数据包。我现在突然同时收到两个数据包。tcpClientSocketId=accept(tcpServerSocketId,(structsockaddr*)&client,(int*)&sockaddrLength);if(tcpClientSocketId我验证了数据实际上是使用Wireshark发送的。有人知道为什么recv方法会阻塞吗?编辑:只是为了澄清:我不依赖于逐个数据包接收的数据——这些数据被组合成一个字符串,然后进行处理。除了等待recv调

安卓 : Listen to packet data when Android in sleep mode

如前一个问题的答案所述,CDMA和GSMradio保持打开状态,即使在Android设备上将CPU置于sleep状态后也是如此。我的问题是...当接到电话时,是什么唤醒了CPU/手机?是否有类似的机制可以在通过与服务器的ActivityTCP连接接收到数据时唤醒我的应用程序,即使手机已进入休眠模式? 最佳答案 CPU休眠时无法接收数据。CPU需要时不时的唤醒一次,看看有没有新的数据。在您检查新数据的代码中,如果有新数据,您可以保持清醒并继续进行处理。您肯定想了解BroadcastReceiver和android闹钟。基本上,您可以告

windows - 套接字编程更新 : recv returning -1, 错误 = 10053

我正在Windows7上实现一个围绕套接字recv()调用循环的TCP/IP应用程序。对于少量数据(20MB),recv在两者之间失败。详细信息:我的应用程序需要与运行的HTTP服务器进行通信,两者都在同一台机器上运行,在这种情况下,tcp应用程序正在向HTTP服务器发送大量数据它给出错误=2,recv返回0。错误2表示ENOENT,但它是什么意思?。有谁知道这是什么(关于套接字)以及我如何解决这个问题?msgLen=recv(s,msg,BUFFER_SIZE,0);if(msgLen>0){//doprocessing}else{printf("\nnodatareceived..

c - recv() 错误 C/C++ 套接字编程

我正在为TR-069服务器编写CWMP客户端。我的客户代码基于此主题(主题中还有一个源代码链接)CWMPCPE(Client)implementation我遇到了一个奇怪的问题,recv()没有读取发送的数据!我已经检查了我发送的数据,它是正确的。我在服务器端安装了一个Wireshark,它使用发送的相同数据客户端捕获数据包。我正在深入研究TR-069ACS源代码,并尝试将监听套接字模式更改为NON_BLOCK-没有用。套接字定义来源:intmake_socket(unsignedintport){intsock;structsockaddr_inname;sock=socket(PF

node.js - NodeJs TCP 客户端 bufferSize 调用多个 `data` 事件?

我刚刚注意到在NodeJsTCP客户端中有一个bufferSize,您可以将传入缓冲区限制到TCP客户端。所以我的问题是,如果我将客户端的bufferSize设置为1个字节并从服务器发送16个字节,我是否应该在客户? 最佳答案 您所指的bufferSize是read-onlyproperty可写流:Object.defineProperty(Socket.prototype,'bufferSize',{get:function(){if(this._handle){returnthis._handle.writeQueueSize+

node.js - Node js TCP 服务器,socket.on ('data' ) - 数据缓冲区包含高负载时的垃圾数据

我使用nodejs的netserver,使用socket.on('data')函数接收数据。为了解析TCP消息,我使用解析缓冲区方法。这使用前4个字节作为TCP消息的长度,以便我可以从TCP流中读取并形成单独的命令。总而言之,高负载时会发生一些垃圾数据作为TCP流的一部分返回,这会导致问题。functiononConnect(client){varaccumulatingBuffer=newBuffer(0);vartotalPacketLen=-1;varaccumulatingLen=0;varrecvedThisTimeLen=0;client.on('data',functio

c++ - 套接字 recv() 一次一个字节

使用套接字一次调用一个字节的recv()是个好主意吗(就性能而言)?它会导致上下文切换吗?如果是这样,为什么会有上下文切换? 最佳答案 一次调用一个字节的recv()会对性能产生负面影响。每次调用都有一定的开销——转换到内核模式、文件描述符查找、分派(dispatch)到协议(protocol)特定的驱动程序、缓冲区/队列锁定等。使用更大的调用recv()缓冲区大大降低了每字节的平均开销。 关于c++-套接字recv()一次一个字节,我们在StackOverflow上找到一个类似的问题: