草庐IT

Flask-Sockets

全部标签

sockets - 如何在 Corona SDK Lua 中运行阻塞操作?

我是LUA的新手,我正在使用CoronaSDK在LUA中编写一个tcp消息传递库。我遇到了一个问题,即使它在协程中运行,套接字读取操作也会挂起应用程序UI。我如何启动协程:functionMessaging:readLoop()self.readCoroutine=coroutine.create(function()self:blockingLoop()end)coroutine.resume(self.readCoroutine)end阻塞循环:functionMessaging:blockingLoop()line,err,rest=self.sock:receive(BUFSI

sockets - 本地主机上的 Nagle 算法

Nagle算法是否在Windows中的环回连接上处于事件状态? 最佳答案 在Windows上,根据Microsoftdocumentation,出于性能原因,Nagle算法未应用于环回TCP连接(搜索“环回”)。 关于sockets-本地主机上的Nagle算法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18588978/

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

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

sockets - 关闭/关闭对 TCP 接收缓冲区的影响

假设我有一个TCP客户端和一个TCP服务器。首先,客户端向服务器发送了一些数据,但是服务器正忙于做其他事情,所以它没有读取这个连接。数据保存在服务器主机上的TCP接收缓冲区中。在这一点上,请帮助我澄清在以下不同情况下会发生什么:在服务器调用读取之前,客户端在此连接上调用close。FIN已经到达服务器TCP,服务器TCP发送了ACK。此时,如果服务器在这个套接字上调用read,它会返回什么?它是否返回TCP接收缓冲区中的未读数据?还是只返回0表示EOF,未读数据被丢弃?在服务器调用read之前,客户端在此连接上使用SHUT_WR调用shutdown。FIN已经到达服务器TCP,服务器T

sockets - 从 lisp 中的套接字流读取行

我正在lisp中的TCP客户端上工作,并且在正确读取/打印套接字流时遇到困难。当客户端向服务器发送数据时,它应该会收到响应,我需要将其写入标准输出。这工作正常,除了我遇到响应打印两次的问题。如果我有多个命令被发送,只有最后一个会被打印两次。这是我的代码:(defunsocket-print(stringsocket)(write-linestring(usocket:socket-streamsocket))(force-output(usocket:socket-streamsocket)))(defunsocket-read(socket)(write-line(read-line

sockets - 三向握手后是否发生接受事件?

我正在使用套接字编程在Linux(客户端和服务器)上编写应用程序。我遇到过这种情况,我的服务器应用程序从不响应另一端的初始SYN数据包。我还在调试这个问题。因为我的服务器正在监听一个端口,所以它从不生成接受事件。accept事件是在TCP握手完成后生成还是在收到初始SYN数据包时生成?一些有用的链接,会很有帮助。最好的 最佳答案 IstheaccepteventisgeneratedaftertheTCPhandshakeisdone是的。ORtheaccepteventisgeneratedwhentheinitialSYNpac

sockets - TCP 中的数据包大小、窗口大小和套接字缓冲区

在研究了“窗口大小”的概念之后,我的理解是它在通过线路发送之前保留数据包,直到收到最早数据包的确认。一旦填满,后续数据包将被丢弃。我在某处也读到TCP是一种流协议(protocol),而数据包是与网络层的IP协议(protocol)相关的。直到我假设我已经声明了一个缓冲区(内部代码),我用一些数据填充它并使用套接字发送这个缓冲区。我声明了一个10000字节的缓冲区,并使用socketover10Gbps链接重复发送它。我有以下假设和问题。请验证并帮助如果我想发送一个64,256,512等字节的数据包,在那么多空间的代码中声明缓冲区并通过套接字发送。每次执行send()命令都会发送一个那

sockets - 为什么 UDP 服务器中只有一个套接字?

我正在备考,发现了这个问题:AtypicalUDPservercanbeimplementedusingasinglesocket.Explainwhy,foraTCPdrivenserver,Ifindthattwosocketsarecreated-onewhereallclientsapproachtheserver,andonespecific(socket)foreachclientforfurthercommunicationbetweentheserverandclient.这是(在我的理解中)由并发问题驱动的(希望不要在联系点地址上与单个客户端进行过多通信)。我知道UD

sockets - 同一 IP 和端口上的多个 TCP 连接

我有一个关于TCP的非常基本的问题。考虑一个应用程序,例如DEST,其IPDestIP监听端口6789。现在我有2个源应用程序,它们能够向此应用程序DEST发送消息,并且它们通过TCP协议(protocol)进行通信。假设源系统1是SRC1,源系统2是SRC2,IP分别为SRC1和SRC2。理想情况下,这些源系统中只有一个正在运行,我可以看到我在SRC1或SRC2和DEST之间有一个事件连接通过在源系统上执行netstat命令(netstat-nao|grep6789)。现在我也启动了第二个源系统,惊讶地发现两个源系统上netstat的结果显示与应用程序的事件TCP连接DEST监听端口

sockets - 只能通过 TCP 接收或发送

我在编写可以通过TCP连接发送和接收数据的PowerShell脚本时遇到问题。它似乎只能让我做一个或另一个。以下是我目前所拥有的。我想监听并等待连接,然后一旦建立,接收一个包含IP地址的字符串,进行一些奇特的查找以查看登录该机器的用户,然后发回用户名。如果我只发送数据,它就可以工作。如果我只接收数据,它就可以工作。如果我尝试同时执行这两项操作,则只有接收有效。我做错了什么?$port=1234do{$user=""$endpoint=new-objectSystem.Net.IPEndPoint([system.net.ipaddress]::any,$port)$listener=n