【发布时间】:2021-01-08 13:12:45
【问题描述】:
我正在尝试构建一个 iOS 应用程序,该应用程序通过 TCP 套接字从本地服务器读取 JSON 数据。如果应用程序加载时服务器可用,一切正常,但如果服务器不可用,当我尝试打开输入流时,它会向控制台抛出错误。我正在尝试找到一种方法来捕获此错误并进行处理。我希望该应用程序继续尝试连接,直到服务器可用。但由于该方法不返回任何值或抛出错误,我没有说明如何确定这种情况何时发生。
(顺便说一句,我收到的错误是“Socket SO_ERROR [61: Connection refused]”
如果有任何建议,我将不胜感激!谢谢
我的代码:
var inputStream: InputStream!
func setupNetworkCommunication() {
var readStream: Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
K.serverIPAddress as CFString,
K.serverPort,
&readStream,
&writeStream)
inputStream = readStream!.takeRetainedValue()
inputStream.delegate = self
inputStream.schedule(in: .current, forMode: .common)
inputStream.open()
【问题讨论】:
-
在调用
open()之后,您可能需要使用属性streamError检查流的错误。或者,检查来自 Darwin.C. 的全局变量errno。