我写了一个简单的客户端程序,使用创建一个套接字
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,但仍然无法正常工作。
单击您的项目设置,然后转到功能,您将在其中看到应用程序沙箱。确保已打开它,然后启用传入连接和传出连接。