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

QSp*_*der 4 haskell cloud-haskell

我使用network-transport-tcp-0.5.1进行creatipn TCP传输.

resultCT <- createTransport host port defaultTCPParameters
Run Code Online (Sandbox Code Playgroud)

但是现在我使用的是network-transport-tcp-0.6.0软件包并因为新类型而出错:

createTransportExposeInternals
  :: N.HostName
  -> N.ServiceName
  -> (N.ServiceName -> (N.HostName, N.ServiceName))
  -> TCPParameters
  -> IO (Either IOException (Transport, TransportInternals))
Run Code Online (Sandbox Code Playgroud)

如何使用(N.ServiceName - >(N.HostName,N.ServiceName))的默认值?也许有一些例子?谢谢!

Zet*_*eta 5

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

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

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

createTransport host port (\port' -> (host, port')) ...
Run Code Online (Sandbox Code Playgroud)