SocketListen
SocketListen[socket,fun]
开始监听指定套接口,在套接口收到数据时异步应用 fun.
SocketListen[port,fun]
开始监听指定端口 127.0.0.1 上的活动连接.
SocketListen[address,fun]
开始监听本机上指定地址 address 的活动连接 (active connection).
SocketListen[spec,opts]
开始监听由 spec 使用选项 opts 定义的活动连接.
SocketListen[spec]
开始监听由 spec 定义的活动连接,但不设置处理函数等.
更多信息和选项
- 在 SocketListen[socket,…] 中,socket 的形式为 SocketObject[…].
- SocketListen[…] 给出 SocketListener 对象.
- 对于 ZMQ 套接口,默认情况下无论是否收到完整的消息都会应用 fun.
- 对于原始 TCP 套接口,默认情况下 fun 被应用到操作系统生成的每个数据缓冲区.
- 如果 SocketListen[spec,…] 创建一个新的 SocketObject,当在返回的 SocketListener 上调用 DeleteObject 时,该套接口将自动关闭.
- 选项设置为 RecordSeparators->"s" 或 RecordSeparators->{"s1","s2",…} 时,fun 被应用于在和 s 或 si 匹配的连续分隔符之间收到的每个数据块.
- 使用以下默认键将函数 fun 应用于表示每个事件的关联:
-
"Data" 收到的字符串形式的数据 "Socket" 监听的 SocketObject "SourceSocket" 生成事件的 SocketObject "Timestamp" 事件发生的时间(作为 DateObject) - 还可以在 HandlerFunctionsKeys 中请求下面的键:
-
"DataBytes" 收到的字节值列表形式的原始数据 "DataByteArray" 收到的 ByteArray 对象形式的原始数据 "MultipartComplete" 一个多部分组成的 ZMQ 消息是否完整 - SocketListen 接受下列选项:
-
CharacterEncoding $CharacterEncoding 假定的字符编码 HandlerFunctionsKeys Default 数据关联中包含的键 HandlerFunctions Automatic 怎样处理套接口事件 RecordSeparators None 消息如何被划分 - 在监听套接口时可以生成以下事件:
-
"DataReceived" 套接口中有数据可用
范例
打开所有单元关闭所有单元范围 (2)
使用系统浏览器打开 URL 将在 Messages 窗口中显示请求:
为处理输入数据,把一个 HandlerFunctions 提交到服务器套接口,将信息保存在一个变量中:
修改 HandlerFunctions,把数据显示为字节列表:
由于监听器不再存在,发送到服务器的消息将不会调用任何 HandlerFunctions:
可以用 SocketReadMessage 从服务器读取消息:
选项 (4)
HandlerFunctionsKeys (1)
将 HandlerFunctionsKeys 修改为仅使用 "DataByteArray" 作为 ByteArray 的数据:
显示 HandlerFunctionsKeys 更新后的值:
HandlerFunctions (1)
RecordSeparators (1)
现在 msgs 的消息字符串将被 RecordSeparators 的值分隔:
文本
Wolfram Research (2017),SocketListen,Wolfram 语言函数,https://reference.wolfram.com/language/ref/SocketListen.html (更新于 2021 年).
CMS
Wolfram 语言. 2017. "SocketListen." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/SocketListen.html.
APA
Wolfram 语言. (2017). SocketListen. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/SocketListen.html 年