Luk*_*kas 2 sockets xcode socketserver swift
我正在尝试快速编写一个简单的回显服务器。我发现的示例不是功能性的低级示例,还是用Objective-c编写的。
我在很多事情上都失败了,我将从头开始。我无法使用更高级别的功能创建一个简单的套接字CFSocketCreate。我最终得到的是:
class EchoServer : NSObject, NSStreamDelegate
{
private var serverSocket: CFSocketRef?
func start()
{
self.serverSocket = CFSocketCreate(kCFAllocatorDefault, AF_INET, SOCK_STREAM, 0, 2, &self.acceptConnection, NSNull())
}
func acceptConnection(socket: CFSocketRef, type: CFSocketCallBackType, address: CFDataRef, data: UnsafePointer<Void>, info: UnsafeMutablePointer<Void>)
{
// Accept connection and stuff later
}
}
Run Code Online (Sandbox Code Playgroud)
我是xcode / objectivec / swift的新手,甚至在理解错误消息时也遇到了困难。上面的代码让我简单地
EchoServer.swift:31:93:'(CFSocketRef,类型:CFSocketCallBackType,地址:CFDataRef,数据:UnsafePointer,信息:UnsafeMutablePointer)->()'不能转换为'@lvalue inout $ T10'
我什至无法做到这一点。
如果仍然有人在寻找这个问题的答案。我修改了一点代码。回调中存在一些键入问题,并且它不能是类上的函数。
import CoreFoundation
func acceptConnection(socket: CFSocket!, type: CFSocketCallBackType, address: CFData!, data: UnsafePointer<Void>, info: UnsafeMutablePointer<Void>)
{
// Accept connection and stuff later
}
class EchoServer : NSObject, NSStreamDelegate
{
private var serverSocket: CFSocketRef?
func start()
{
self.serverSocket = CFSocketCreate(kCFAllocatorDefault, AF_INET, SOCK_STREAM, 0, 2, acceptConnection, nil)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |