如何在 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.

或者,您已将端口配置为从外部转发 808080,因此 ServiceName 8080 将导致 80 + 外部地址.

总而言之,附加参数为您提供了一种正确处理外部端口转发和主机名的方法。如果此时您没有任何外部网络,您可以简单地使用

createTransport host port (\port' -> (host, port')) ...