Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 具有阻止写入操作的WebSocket服务器_Sockets_Tcp_Websocket_Server_Blocking - Fatal编程技术网

Sockets 具有阻止写入操作的WebSocket服务器

Sockets 具有阻止写入操作的WebSocket服务器,sockets,tcp,websocket,server,blocking,Sockets,Tcp,Websocket,Server,Blocking,我正在寻找一个WebSocket服务器API,用于任何平台,并使用任何语言编写,具有阻塞写入操作。 到目前为止,我看到的所有实现都只有异步io方法 我需要的是具有阻塞发送功能,以了解信息何时完全发送发送缓冲区为空和/或访问相关tcp层信息,如发送方缓冲区的队列长度和RTT,而不使用任何来自客户端的确认或回复 有这样一个实现我可以使用吗,或者我应该自己在TCP套接字上实现吗?您可以使用golang websocket lib或使用linux syscall编写自己的websocket lib来执行

我正在寻找一个WebSocket服务器API,用于任何平台,并使用任何语言编写,具有阻塞写入操作。 到目前为止,我看到的所有实现都只有异步io方法

我需要的是具有阻塞发送功能,以了解信息何时完全发送发送缓冲区为空和/或访问相关tcp层信息,如发送方缓冲区的队列长度和RTT,而不使用任何来自客户端的确认或回复


有这样一个实现我可以使用吗,或者我应该自己在TCP套接字上实现吗?

您可以使用golang websocket lib或使用linux syscall编写自己的websocket lib来执行阻塞网络操作。但它们仅在系统tcp缓冲区已满时阻塞,而不是在对等方收到所有数据后阻塞和解除阻塞。如果系统tcp缓冲区未满,则写入系统调用返回的时间将少于1毫秒。如果您发送非常大的数据量,这个系统tcp缓冲区完全阻塞功能可以满足您的需要

如果您想在对等方接收到所有数据后进行阻塞和解除阻塞,那么您的要求不能直接使用tcp/websocket协议

您只能知道您的对等方在从您自己的协议向您发送ack后接收到您的所有数据

当然,您可以编写一个协议,在对等应用程序读取所有数据并将其与api通信后,写入操作可以解除阻止,但该协议不是tcp/websocket协议


请注意,即使您可以获得tcp ack数据包,您也无法知道另一个对等方的进程何时处理了您的所有数据,比如将它们存储在一个文件中。您必须设计一个api,使对等方可以告诉协议它处理了您的所有数据

你到底想解决什么真正的问题?我想知道在不使用客户端回复的情况下,通过WebSocket从服务器向客户端发送文件并计算吞吐量需要多长时间,因此,只有在服务器端,TCP级别上没有这样的阻塞写函数,更不用说WebSocket服务器API级别了,除非像这样的Windows技巧对你有用。但是,从本地套接字发送缓冲区的传递仅限于对等方的套接字接收缓冲区。您不知道对等应用程序何时读取了所有数据。因此,目前还不清楚这样的API或用法是否真正符合您在评论中所述的要求。在任何情况下,搜索/推荐问题都是离题的。