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
Sockets 异步套接字与同步套接字_Sockets - Fatal编程技术网

Sockets 异步套接字与同步套接字

Sockets 异步套接字与同步套接字,sockets,Sockets,我有一个关于异步套接字的问题。这几个月来一直困扰着我,我认为我应该明智地从专业人士那里得到事实 我有一个来自客户端的传入流,我想接收数据。在开始发送数据之前,此传入流需要通过字符串进行初始设置 我听说过node.js等异步tcp服务器的强大可伸缩性。我的问题是,我是否可以使用node.js或任何其他异步tcp服务器与该客户端握手并接收传入流 您可以将传入的数据视为给定时间点的库存数据流或用电量。从本质上讲,数据将不断地流入 请告诉我需要共享哪些其他信息来帮助我理解异步套接字以及如何使用它。是的,

我有一个关于异步套接字的问题。这几个月来一直困扰着我,我认为我应该明智地从专业人士那里得到事实

我有一个来自客户端的传入流,我想接收数据。在开始发送数据之前,此传入流需要通过字符串进行初始设置

我听说过node.js等异步tcp服务器的强大可伸缩性。我的问题是,我是否可以使用node.js或任何其他异步tcp服务器与该客户端握手并接收传入流

您可以将传入的数据视为给定时间点的库存数据流或用电量。从本质上讲,数据将不断地流入


请告诉我需要共享哪些其他信息来帮助我理解异步套接字以及如何使用它。

是的,在异步套接字之上实现握手是完全正常的

考虑伪代码:

socket=accept()#或connect()
//现在插座已连接
socket.write(登录请求)
logon\u response=socket.read()
断言(登录\响应确定)
//现在套接字已登录
socket.write(更多的握手);
握手_响应=socket.read()
断言(握手\响应正常)
//现在插座准备好了
而data=socket.read()
{进程数据…}
您可以将其建模为一个状态机,这样就可以方便地与异步套接字一起使用。请参见下面的代码如何与上面的代码相似,但又被分解为多个回调:

#状态空闲->登录
处理连接事件(套接字)
状态=登录
socket.write(登录请求)
#状态记录->握手
句柄\登录\响应(套接字)
logon\u response=socket.read()
断言(登录\响应确定)
状态=握手
socket.write(更多的握手);
#状态握手->准备就绪
手柄\握手\响应(插座)
握手_响应=socket.read()
断言(握手\响应正常)
状态=就绪
所有的读取都在这里,并根据状态机进行调度

handle\u read(套接字)
开关(状态){
案例记录:处理\u登录\u响应(套接字)
案例握手:处理握手响应(插座)
大小写就绪:进程(socket.read())
}


另外,由于某些原因,我在这里遇到了一个重大的格式化错误,希望它是可读的

如果数据将连续流式传输,也许使用UDP更好?这是不可能的,因为客户端不使用udpThanks!今晚让我考虑一下您的解决方案。快速提问,这可以处理多个并发套接字吗?是的,任意多个:这通常用于
select
poll
或其他同步事件调度器。只需将单独的状态机(和/或回调)与每个套接字相关联。