【发布时间】:2014-09-11 20:48:33
【问题描述】:
如果我想连接到服务器,我会在 Java 中打开一个 Socket 并使用端口和主机地址对其进行初始化,然后检索输入/输出流并读取/写入我想要的任何内容。
在 Swift 中我很难做到这一点,因为它不是这样构建的,我真的很想看到一个简单的例子来说明如何连接到服务器、检索流并使用它们。
编辑1:
这是@Grimxn 引用之后的测试代码。
var host = "http://google.com"
var readStream :CFReadStreamRef
var writeStream :CFWriteSteamRef
var socket = CFStreamCreatePairWithSocketToHost(nil, host, 80, readStream, writeStream)
主要问题:
初始化上面的两个流还需要使用我一无所知的CFAllocator。使用 kCFAllocatorDefault 并没有多大帮助,同样的错误。
以上代码返回此错误:无法将表达式的类型“Void”转换为 UInt32 类型。
例如,当我使用 UInt32(80) 构造 UInt32 时,错误是:找不到 ' 的重载init' 接受提供的参数。
感谢您的帮助!
【问题讨论】:
-
是的,我做到了。我在使用 CFStreamCreatePairWithSocketToHost 时遇到问题。对于这个简单的代码,我收到此错误无法将表达式的类型“Void”转换为 UInt32 类型。当我使用 '80' 作为参数初始化 UInt32 对象时也会发生这种情况。在这种情况下,错误是:找不到接受提供的参数的“init”的重载。
var host = "google.com"var readStream :CFReadStreamRefvar writeStream :CFWriteStreamRefvar socket = CFStreamCreatePairWithSocketToHost(nil, host, 80, readStream, writeStream)Swift 中的一个简单示例将解决我很多问题 -
您可以发布您尝试过的内容吗?人们更容易处理实际代码,而不是猜测你可能做了什么......
-
当然,我刚刚编辑了评论,我遇到了一个问题,使它看起来正确而不是一团糟。感谢您提供这么多帮助。
-
有什么新的@Grimxn 吗?
标签: sockets input stream swift output