【发布时间】:2020-02-27 05:40:51
【问题描述】:
我写了一个简单的客户端程序,使用它创建一个套接字
CFSteamCreatePairWithSocketToHost function
并连接到在端口 8080 上运行在本地主机上的服务器。它创建的套接字很好,但它从不连接到服务器。我用C写了服务器。它不起作用并给了我一个
kCFErrorDomainCFNetwork error 72000
唯一的中继信息是显然无法建立 TCP 连接,但不知道为什么。所以我也尝试用 C 编写客户端脚本并将其添加到我的 Swift 项目桥接头中,但它仍然无法连接。它可以很好地创建套接字,但无法连接到服务器,我不知道为什么。
但是当我使用 clang 编译并运行它时,相同的 C 客户端脚本可以工作,但是当我在 Xcode 中使用我的 swift 项目运行它时没有连接。我的 mac 是否阻止库建立 TCP 连接或其他什么?
我什至不知道要搜索什么。我发现的唯一一件事是一个名为 starscream 的 Github 库上的问题,它与我遇到的错误相同,我什至没有使用该库,并且那里的回复是“我们唯一能从这个错误中辨别出的是TCP 连接失败”。
这是我使用 Swift 4 连接到服务器的代码。服务器在 localhost 的 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()
}
}
我也尝试将“localhost”替换为“127.0.0.1”,这是我为服务器指定的运行 IP,但仍然无法正常工作。
【问题讨论】: