草庐IT

wpcf7_before_send_mail

全部标签

c++ - 最佳实践 : Sending typed data over TCP

我想实现一个服务器,它有一些方法,可以从中接受二维点数组(结构)。我想知道我是否应该将它实现为WebService或简单的TCP套接字。目标系统是在DebianLinux上运行的C++。就我的理解而言,WebService是基于XML/SOAP的,我可以在任何其他客户端系统上使用该接口(interface),包括它的所有数据类型。相反,普通的TCP套接字只是读取字节数组。但是有没有一种简单的方法可以通过TCP套接字实现强类型数据传输,这样我就不需要网络服务器来运行WebService?这里是一个C#示例,服务器的界面应该是这样的:publicinterfaceIService{void

javascript - 快速调用 socket.send() 时,websocket 客户端间歇性地无法传输

我有一个websocket服务器和客户端。我能够建立连接并双向传输消息(数据)。但是,当在Web浏览器中运行的客户端快速调用socket.send()时,服务器不会接收到一些消息。如果我放慢客户端对socket.send()的调用,则服务器会收到所有消息。为什么调用socket.send()的时间与间歇性丢弃消息有什么关系?在Win7、Android和iOs上运行的Chrome、FireFox和Safari会出现此行为。因此,我不认为这是浏览器错误。服务器是nodejs,但这无关紧要,因为服务器不是问题所在。我所说的快速调用是指在由requireAnimationFrame()控制的循

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 - 心脏出血错误 : Why is it even possible to process the heartbeat request before the payload is delivered?

首先,我不是C程序员,而且OpenSSL代码库很大,所以请原谅我问了一个我可能会找到答案的问题,因为我有时间和技能来深入研究代码。据我所知,TLS在TCP上运行。TCP是面向流的,因此无法知道消息何时已交付。您必须事先知道传入的消息应该有多长,或者有一个要扫描的分隔符。考虑到这一点,OpenSSL如何在收到完整有效负载之前处理心跳请求?如果OpenSSL在收到有效负载长度后才开始处理它从TCP套接字读取的第一block数据,那么OpenSSL不仅不安全,而且在正常操作下会损坏。由于TCP的最大段大小为536字节,任何大于该大小的有效负载都将跨越多个TCP段,因此可能跨越多个套接字读取。

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

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

c# - 通过 TCP 发送大对象 : "End of Stream encountered before parsing was completed"

每当我尝试从NetworkStream中反序列化double列表时,我总是收到SerializationException:EndofStreamencounteredbeforeparsingwascompleted我有一个简单的客户端服务器架构:我的TcpTransportClient包装了TcpClient的功能,我使用了两种基本方法:Send(发送消息)和Receive(阻塞直到收到消息)。Send函数接收一个Message,使用BinaryFormatter将其序列化并通过NetworkStream发送字节.publicvoidSend(Messagemessage){if(

java 套接字 : listen before accept?

上下文:由于DOS攻击,我在程序内存中某处的集合中有一个禁止的ip地址表。我使用TCP服务器套接字,接受每个连接,然后检查IP地址,然后关闭连接或继续处理客户端。我想知道是否有可能在Java中监听TCP服务器套接字上的传入连接,并在给定请求客户端的ip地址的情况下以某种方式接受或拒绝建立tcp链接。我的意思是无需接受&即可关闭客户端套接字,这是我已经在做的事情。谢谢。 最佳答案 不使用SecurityManager,你只能接受,然后检查传入的IP地址,如果它在禁止列表中,则断开连接。用SecurityManager,你可以让它抛出S

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

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