草庐IT

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 代码编写基于 TCP 的 FTP 服务

我正在尝试为多线程服务器编写TCPFTP服务。我找到了这个教程http://www.mario-konrad.ch/wiki/doku.php?id=programming:multithreading:tutorial-04这对理解TCP协议(protocol)的客户端多线程非常有帮助。事实上,这段代码创建了一个可以同时接受来自不同客户端的多个连接的服务器。但是,我正在努力寻找如何在其上应用ftp服务。精确地说明如何向FTP服务器发送文件和从FTP服务器获取文件。有什么帮助吗? 最佳答案 下面的代码是我去年为一篇网络论文所做的作业

Python:TCP 中断路由的检测速度非常慢

我在使用Python3/asyncio(Protocol)编写的服务器应用程序时遇到了问题,但我很确定它与python或asyncio的关系不大,因为我尝试了不同的版本,还有一些5liner只是带有套接字接口(interface)。它是关于与许多客户端硬件TCP/IPRS232转换器的并发通信。这就是使用asyncio而不是阻塞写入的线程的原因。有一些周期性的短数据发送。当我物理地切断连接并等待异常发生时出现问题:asyncio-Fatalreaderroronsockettransportprotocol>Traceback(mostrecentcalllast):File"/usr

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 发送结构(C 编程)

我有一个客户端和服务器程序,我想从客户端发送整个结构,然后在服务器上输出结构成员“ID”。我已经完成了所有的连接等,并且已经成功地通过以下方式发送了一个字符串:send(socket,string,string_size,0);那么,是否可以通过send()发送结构而不是字符串?我可以将服务器上的缓冲区替换为相同类型的空结构然后继续吗? 最佳答案 客户端和服务器机器“相同”吗?只有当每一端的C编译器在内存中布局完全相同的结构时,您所提议的才会起作用。有很多原因可能不是这种情况。例如,客户端和服务器机器可能有不同的体系结构,那么它们在

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

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

java - 通过套接字发送 10 MB 的缓冲区 - block 还是整个 10MB?

我正在将必须从我的C++函数发送到Java的详细信息转换为字符串和将通过套接字发送的char*。我的缓冲区大小是10MB。我可以一次发送10MB还是应该拆分并作为更小的内存块发送?这两种方法有什么区别?如果我应该发送较小的内存,block大小应该是多少? 最佳答案 CanIsendthe10MBinoneshot是的。orshouldIsplitandsendaschunksofsmallermemory?没有。Whatisthedifferencebetweenthosetwoapproaches?不同之处在于,在情况1中,您让T

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

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