在线文档教程

diameter_tcp

diameter_tcp

模块

diameter_tcp

模块摘要

TCP上的直径传输。

描述

该模块使用TCP实现直径传输gen_tcp(3)。它可以被指定为一个transport_module选项的值,diameter:add_transport/2并实现其中记录的行为diameter_transport(3)。支持TLS安全性,可以作为功能交换后的升级或连接建立时的升级。

请注意,SSL应用程序是TLS所必需的,必须在配置直径传输的TLS功能之前启动。

出口

start{Type, Ref}, Svc, [Opt]) -> {ok, Pid} | {ok, Pid, [LAddr]} | {error, Reason}

类型

启动功能需要diameter_transport(3)

选项raddrrport指定连接传输的远程地址和端口,并且对于监听传输无效。

选项accept指定监听传输的远程地址,对于连接传输无效。如果指定,则与指定地址之一不匹配的远程地址会导致连接中止。accept可以指定多个选项。Match不作为地址解析的字符串值被解释为正则表达式。

选项ssl_options必须为要支持TLS传输被指定:值true在连接建立时立即TLS握手的结果,同时list()指定选项将被传递到ssl:connect/2ssl:ssl_accept/2能力交换后,如果TLS协商。

选项 fragment_timer指定用于从传入字节流中刷新消息的计时器的超时时间(以毫秒为单位),即使其直径标题的“消息长度”字段中指示的字节数尚未累计:此消息通过传输接口连续超时两次后没有接收到额外的字节。默认为1000。

选项sender指定是否使用专用进程发送传出消息,这可以避免发送阻止接收的可能性。默认为false。如果设置为true那么message_cb可以避免消息在发送方进程中排队的可能性,而不必配置限制。

Option message_cb指定一个在传入和传出消息上调用的回调函数,可用于实现流量控制。它被施加到两个参数:一个原子表示回调的原因(send,recv,或ack一个完成的发送后),及有关的消息(二进制()上recv)上,二进制(或diameter_packet记录send或ack,或false在ack当传入请求已被丢弃)。它应该返回一个动作列表和一个新的回调作为尾部; 例如。[fun cb/3, State]。有效操作是原子,send或者recv导致发送/接收以下消息值操作,发送/接收消息(binary()或diameter_packet记录)或使用boolean()启用/禁用套接字读取。超过一个send// recv消息序列可以从同一个回调中返回,如果与作为回调的第一个参数传递的值相同,则可以省略初始值send/ recv。读取最初是启用的,并且返回false并不意味着不能有后续的recv回调,因为消息可能已经被读取。空尾相当于普遍的回调。默认为等效于的回调fun(ack, _) -> []; (_, Msg) -> [Msg] end。

剩余选项可以是任何接受ssl:connect/3gen_tcp:connect/3连接的运输工具,ssl:listen/2或者gen_tcp:listen/2对于倾听运输工具,取决于是否{ssl_options, true}已经指定。选项binarypacket并且active不能被指定。此外,port可以为监听传输指定选项以指定本地监听端口,默认为标准化3868.请注意,该选项ip指定本地地址。

一个ssl_options列表必须指定当且仅当有问题的运输已经设置Inband-Security-Id为1( TLS),按规定要么diameter:start_service/2或者diameter:add_transport/2,使运输过程中会收到的是否与TLS握手以下功能交换动工通知。未能在协商TLS的支持TLS的传输上指定选项列表将导致TLS握手失败。如果未指定TLS功能,ssl_options则会导致传输进程等待不会提供的通知,最终导致RFC 3539监视程序断开连接。

如果未指定选项,非空Host-IP-Address列表的第一个元素将Svc提供本地IP地址ip。本地地址start/3通过connected传输接口返回或传入消息。

另见

diameter(3), diameter_transport(3), gen_tcp(3), inet(3), ssl(3)