【问题标题】:Sending Message Over TCP in Swift在 Swift 中通过 TCP 发送消息
【发布时间】:2016-08-21 08:51:43
【问题描述】:

我正在使用带有以下代码的 swift socket 库:

let client:TCPClient = TCPClient(addr: "127.0.0.1", port: 8080)
var (success,errmsg)=client.connect(timeout: 1)
if success{
    var (success,errmsg)=client.send(str:"|~\0" )
    if success{
        let data=client.read(1024*10)
        if let d=data{
            if let str=String(bytes: d, encoding: NSUTF8StringEncoding){
                print(str)
            }
        }
    }else{
        print(errmsg)
    }
}else{
    print(errmsg)
}

代码运行良好,但我的问题是,只有当模拟器不在真正的 iphone(我的 iphone)上,而只能在他们的模拟器上时,连接才会成功。 我不知道如何解决它以及问题是什么。 当我打印 errmsg 时,它会显示:“连接超时”。

【问题讨论】:

  • 你的ip是本地主机......
  • 我当然改了,还是不行..@Arbitur
  • 哪个ip,到哪里?到你的路由器?检查您的路由器是否可以通过该端口访问
  • 是的,正如我所说,它在常规模拟器中完美运行,但在我的 iPhone 上却不行...@Arbitur
  • 没有更多信息恐怕帮不了你

标签: ios iphone swift tcp client-server


【解决方案1】:

您可以尝试将您的主机 ip 设置为您的计算机的 ip 吗?

let client:TCPClient = TCPClient(addr: "your computer ip", port: 8080)

我猜它可以在模拟器上运行,因为模拟器与您的真实计算机共享网络,因此如果从外部(例如您的手机)连接,我认为您应该尝试将 localhost ip 替换为运行服务器的计算机的 ip .

还有一点是你的服务器可能是本地服务器,所以要确保它和手机连接在同一个网络中。

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 2016-05-12
    • 1970-01-01
    • 2018-04-13
    • 2019-03-31
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多