如何在 Network.Transport.TCP 的新版本中使用 createTransport?
How to use createTransport with new version of Network.Transport.TCP?
我使用 network-transport-tcp-0.5.1 来创建 TCP 传输。
resultCT <- createTransport host port defaultTCPParameters
但是现在我正在使用包 network-transport-tcp-0.6.0 并且由于新类型而出现错误:
createTransportExposeInternals
:: N.HostName
-> N.ServiceName
-> (N.ServiceName -> (N.HostName, N.ServiceName))
-> TCPParameters
-> IO (Either IOException (Transport, TransportInternals))
如何使用 (N.ServiceName -> (N.HostName, N.ServiceName)) 的默认值?
也许有一些例子?
谢谢!
当您选择 port
时,createTransport
可能不会使用给定的端口。例如,您可能会使用端口 "0"
,这意味着可能会使用 any 端口。根据使用的端口,外部主机名或服务可能会有很大差异。例如,您的防火墙将仅转发 a.qspider
上的端口 1000-2000 和 b.qspider
上的 2000-3000。因此,如果您在 1320 上绑定,您的外部主机和服务名称将为 a.qspider:1320
.
或者,您已将端口配置为从外部转发 8080
到 80
,因此 ServiceName
8080
将导致 80
+ 外部地址.
总而言之,附加参数为您提供了一种正确处理外部端口转发和主机名的方法。如果此时您没有任何外部网络,您可以简单地使用
createTransport host port (\port' -> (host, port')) ...
我使用 network-transport-tcp-0.5.1 来创建 TCP 传输。
resultCT <- createTransport host port defaultTCPParameters
但是现在我正在使用包 network-transport-tcp-0.6.0 并且由于新类型而出现错误:
createTransportExposeInternals
:: N.HostName
-> N.ServiceName
-> (N.ServiceName -> (N.HostName, N.ServiceName))
-> TCPParameters
-> IO (Either IOException (Transport, TransportInternals))
如何使用 (N.ServiceName -> (N.HostName, N.ServiceName)) 的默认值? 也许有一些例子? 谢谢!
当您选择 port
时,createTransport
可能不会使用给定的端口。例如,您可能会使用端口 "0"
,这意味着可能会使用 any 端口。根据使用的端口,外部主机名或服务可能会有很大差异。例如,您的防火墙将仅转发 a.qspider
上的端口 1000-2000 和 b.qspider
上的 2000-3000。因此,如果您在 1320 上绑定,您的外部主机和服务名称将为 a.qspider:1320
.
或者,您已将端口配置为从外部转发 8080
到 80
,因此 ServiceName
8080
将导致 80
+ 外部地址.
总而言之,附加参数为您提供了一种正确处理外部端口转发和主机名的方法。如果此时您没有任何外部网络,您可以简单地使用
createTransport host port (\port' -> (host, port')) ...