草庐IT

send-feedback

全部标签

sockets - hping 发送 SYN : how not to send RST after receiving SYN/ACK?

使用hping,我发送SYN数据包,第二个对等方正在监听并回复SYN/ACK,但是hping(我猜是linux内核这样做)在收到SYN/ACK后发送RST。无论如何我可以在收到SYN/ACK后停止我的机器发送RST吗?谢谢。 最佳答案 此命令应丢弃任何带有RST的TCP数据包标记设置您的机器将发送到特定目的地:iptables-IOUTPUT1-d-ptcp--tcp-flagsRSTRST-jDROP要还原它,请使用:iptables-DOUTPUT-d-ptcp--tcp-flagsRSTRST-jDROP另一种方法是使用SYN

Python TCP 'Send' 套接字缓冲区大小

我想使用TCPPythonsocket模块发送/接收“部分”数据。我的接收服务器端socket设置为在单个recv调用中接收40字节的数据:whileTrue:data=connection.recv(40)ifnotdata:break...connection.close()我有一些示例数据~500字节长,转换为bytes对象,由“客户端”发送到“服务器”:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)...s.send(sample_data)虽然我只调用了一次send方法,但这是否意味着客户端一次发送40个字节的“sampl

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++ - 套接字 : 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()只是将您要通过网络发送的数据写入套接字的缓