我无法获得客户端脚本来连接到本地服务器,TCP连接永远不会发生

问题描述 投票:2回答:1

我写了一个简单的客户端程序,使用创建一个套接字

CFSteamCreatePairWithSocketToHost function

并连接到在端口8080上的本地主机上运行的服务器。它创建的套接字很好,但从未连接到服务器。我用C语言编写了服务器。它不起作用,给了我一个

kCFErrorDomainCFNetwork error 72000

并且唯一中继的信息是,显然无法建立TCP连接,但不知道为什么。因此,我也尝试用C编写客户端脚本,并将其添加到我的Swift项目桥接头文件中,但所有脚本仍未连接。它可以很好地创建套接字,但无法连接到服务器,我也不知道为什么。

但是当我使用clang编译并运行它时,同一个C客户端脚本可以工作,但是当我用Xcode中的swift项目运行它时却没有连接。我的mac阻止了建立TCP连接之类的库吗?

我什至不知道要搜索什么。我发现的唯一问题是一个名为starscream的Github库中的一个问题,该错误与我遇到的错误相同,我什至没有使用该库,并且答复是“我们唯一可以从此错误中辨别的是TCP连接失败”。

这是我使用Swift 4连接到服务器的代码。服务器在本地主机的8080端口上运行。

class client:NSObject {
      var inputstream = InputStream!
      var outputstream = OutputStream!

      func setupNetworkCom() {
          var readstream = Unmanaged<CFReadStream>?
          var writestream = Unmanaged<CFWriteStream>?

          CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, "localhost" as CFString, 8080, &readstream, &writestream)

          inputstream = readstream!.takeRetainedValue()
          outputstream = writestream!.takeReatainedValue()

          inputstream.schedule(in: .current, forMode: .common)
          outputstream.schedule(in: .current, forMode: .common)

          inputstream.open()
          outputstream.open()
      }
}

我还尝试用“ 127.0.0.1”替换“ localhost”,这是我为要在其上运行的服务器指定的IP,但仍然无法正常工作。

swift macos sockets tcp
1个回答
1
投票

单击您的项目设置,然后转到功能,您将在其中看到应用程序沙箱。确保已打开它,然后启用传入连接和传出连接。

© www.soinside.com 2019 - 2024. All rights reserved.