如何将createTransport与新版本的Network.Transport.TCP一起使用?

时间:2018-02-14 07:05:49

标签: haskell cloud-haskell

我使用network-transport-tcp-0.5.1进行creatipn 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 - &gt;(N.HostName,N.ServiceName))的默认值? 也许有一些例子? 谢谢!

1 个答案:

答案 0 :(得分:5)

当您选择port时,createTransport可能不会使用给定的端口。例如,您可以使用端口"0",这意味着可能会使用任何端口。根据使用的端口,外部主机名或服务可能会有很大差异。例如,您的防火墙只会转发a.qspider上的端口1000-2000和b.qspider上的2000-3000端口。因此,如果您在1320上绑定,则外部主机和服务名称将为a.qspider:1320

或者,您已将端口配置为从外部转发808080,因此ServiceName 8080会产生80 +外部地址。< / p>

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

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