草庐IT

send_buf

全部标签

c# - Socket.Send 是否有可能阻止代码并永远完成?

我得到了这个Socket.Send代码,我的协议(protocol)是tcp。byte[]commandBytes=Encoding.ASCII.GetBytes(command);intiBytesSent=socket.Send(commandBytes,commandBytes.Length,SocketFlags.None);Debug.WriteLine("SEND:"+command);我有超过10,000个命令要发送,每个命令大约有100个字符。我在foreach循环中为10,000个命令调用Socket.Send。我注意到Socket.Send代码阻塞了当前线程并需要很

c - 客户端断开连接后第一次调用 'send' 时未获得 sigpipe

我正在开发一个TCP服务器端应用程序,它将数据转发到客户端。我面临的问题是,如果我的客户端断开连接,我会尝试在我的服务器端应用程序中找出哪些数据已发送,哪些未发送。我的研究表明,基本上有两种方法可以找出答案:1)从socket读取并检查FIN信号是否返回2)在发送调用中等待sigpipe信号第一个解决方案对我来说似乎不可靠,因为我不能保证客户端不会发送任何随机数据,因此即使它不应该使我的测试成功。第二个解决方案的问题是,我仅在调用send之后的X之后获得sigpipe,因此无法保证哪些数据真正被发送,哪些没有。我在SO和其他网站上读到,sigpipe只应该在第二次调用send之后出现,

c - TCP 连接中链接断开时的 send() 函数行为

场景如下:AB我在A和B(基于Linux的机器)上都使用非阻塞套接字。A和B有一个TCP连接,突然连接它们的链路断开(该链路可能不是直接链路)。现在,在链接断开后,当在A端调用send()函数将一些数据发送到B时,它会成功返回(即返回要发送的字节数)。这种行为的原因是什么,当我们知道远程端将无法接收此数据时,当链接断开时? 最佳答案 这是正常的预期行为。whenweknowtheremotesidewillnotbeabletoreceivethisdata好吧,也许您知道,因为您是您拔下电缆的人并且您不会再将其重新插入,但是计算机

c++ - 套接字 : send() function returned 'Broken Pipe' error

我是套接字编程的新手,我正在尝试使用C++中的send()函数将一些数据包发送到服务器,但是在将数据包发送到服务器。你能帮我解决以下几点吗?当send()函数返回“Brokenpipe”错误时?套接字编程中出现“Brokenpipe”错误的原因是什么?send()函数出现“Brokenpipe”错误的解决方案是什么?注意:我使用命名套接字在客户端和服务器之间进行通信。 最佳答案 Whensend()returnsthe"Brokenpipe"errors当您写入已被对等方关闭的连接时。Whatarethecausesfor"Brok

c++ - 发送大量数据后,我的 send() 调用导致我的程序完全停止。这怎么可能?

所以基本上我正在用C++制作一个在Linux上运行的MMO服务器。起初它工作正常,但在50个客户端可能40秒后它会完全暂停。当我调试它时,我发现它停止响应之前的最后一帧基本上是syscall(),此时它消失在内核中。一旦它消失在内核中,它甚至不会返回任何值……这完全令人费解。50个客户端每250毫秒发送23个字节。然后将这23个字节广播给所有其他49个客户端。这个过程开始变慢,然后最终完全停止,内核永远不会从send()命令的系统调用中返回。这里有哪些可能的原因?这真的让我发疯!我发现的一个选项是强制延迟的Nagles算法。我已经尝试切换它,但它仍然会发生。编辑:程序卡在这里。具体来说

sockets - TCP 中的 send() 函数是否保证按顺序到达?

众所周知,send()的返回值可以小于length,表示到达的是消息的一部分,而不是全部。我应该发送2个数据包,内容分别为“ABC”和“DEF”,长度为3。我想在调用send()传输“ABC”后通过send()发送“DEF”。但是,有一种情况是“ABC”的send()的返回值小于它的长度3。我认为消息可能没有按顺序传递。例如,如果“ABC”的返回值为2,则接收到的消息为“ABDEF”。TCP中的send()函数是否保证按顺序到达? 最佳答案 首先,send()本身不保证任何东西,send()只是将您要通过网络发送的数据写入套接字的缓

c - 对 send() 的多次调用合并为对 recv() 的一次调用

我有一个客户端-服务器应用程序。客户端使用两个不同的send()调用发送一个字符串后跟一个整数。这两个数据应该存储在服务器上的两个不同变量中。问题是发送的两个变量都在recv()调用中收到。因此,两个不同的send()发送的两个字符串被链接起来并存储在第一个recv()的缓冲区中。服务器.c:printf("Incomingconnectionfromclient%s:%iaccepted\n",inet_ntoa(clientSocketAddress.sin_addr),ntohs(clientSocketAddress.sin_port));memset(buffer,0,siz

C 套接字 : does send wait for recv to end?

我在Windows上使用阻塞式C套接字。我使用它们将数据更新从服务器发送到客户端,反之亦然。我以高频率(每100毫秒)发送更新。send()函数是否会等待接收方recv()接收到数据才结束?如果我很好地理解手册页,我假设不会:"Successfulcompletionofsend()doesnotguaranteedeliveryofthemessage."那么如果一个正在运行10次send()而另一个只完成1次recv()会发生什么?我需要使用某种确认系统吗? 最佳答案 让我们假设您正在使用TCP。当您调用发送时,您正在发送的数据

ios - 核心蓝牙 : Send data between 2 iOS devices

我使用swift编程已经有一段时间了,但我对CoreBluetooth完全陌生。有没有办法使用CoreBluetooth将原始数据(整数、字符)从一台iOS设备发送到另一台?提前致谢 最佳答案 是的。您需要制作一个外围设备和第二个中央设备(或两者)。在外围设备中,您需要发布数据(peripheralManager.startAdvertising),而在中央设备中,您需要通过特性获取它。您可以在https://developer.apple.com/documentation/corebluetooth中阅读所有相关内容

iOS - 在 Swift 中,我们是 "send a message"还是 "call method/function"?

Swift是在编译时保留方法查找列表还是在特定内存位置调用函数?最好的问候。关于此:http://davedelong.tumblr.com/post/58428190187/an-observation-on-objective-c 最佳答案 我建议您查看以下链接,尤其是第一个,因为它通过C++和Objective-C的示例解释了概念,以便更好地理解静态、延迟和动态调度之间的区别(对于方法)。简而言之:静态调度函数及其实现在编译时确定,因此不会在运行时失败(因为除非绑定(bind)成功,否则编译器不会继续编译过程)。延迟发送函数在