小编Rus*_*lan的帖子

在 Mac OS Hight Sierra 上创建和绑定套接字

我在为 Hight Sierra 的应用程序中创建套接字时遇到了严重而奇怪的问题。如果我创建命令行工具,一切正常!我创建套接字,绑定套接字。但是如果我尝试创建 Cocoa App,我无法绑定我的套接字!:(

如果我在 Cocoa App 中使用 CFSockets,

    char punchline[] = "MESSAGE from Server!";
    int yes = 1;

    CFSocketContext CTX = {0, punchline, NULL, NULL, NULL};

    CFSocketRef TCPServer = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack) &AcceptCallBack, &CTX);


    if (TCPServer == NULL) return;

    setsockopt(CFSocketGetNative(TCPServer), SOL_SOCKET, SO_REUSEADDR, (void *) &yes, sizeof(yes));

    struct sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));
    addr.sin_len = sizeof(addr);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(33000);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);

    NSData *address = [NSData dataWithBytes:&addr length:sizeof(addr)];

    if (CFSocketSetAddress(TCPServer, (CFDataRef) address) …
Run Code Online (Sandbox Code Playgroud)

sockets macos objective-c cfnetwork cfsocket

4
推荐指数
1
解决办法
2514
查看次数

AURenderCallback中的UnsafeMutablePointer

我不明白该如何UnsafeMutablePointer在Swift 3中使用AURenderCallback

我尝试下面的代码:

import Foundation
import AudioToolbox

let sineFrequency = 880.0

// MARK: User data struct
struct SineWavePlayer {
    var outputUnit: AudioUnit? = nil
    var startingFrameCount: Double = 0
}

// MARK: Callback function
let SineWaveRenderProc: AURenderCallback = {(inRefCon, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData) -> OSStatus in

    var player = UnsafeMutablePointer<SineWavePlayer>(inRefCon)


    var j = player.pointee.startingFrameCount
    let cycleLength = 44100 / sineFrequency

    for frame in 0..<inNumberFrames {
        var buffers = UnsafeMutableAudioBufferListPointer(ioData)

        UnsafeMutablePointer<Float32>(buffers[0].mData)[Int(frame)] = Float32(sin(2 * M_PI * …
Run Code Online (Sandbox Code Playgroud)

core-audio swift3 unsafemutablepointer

2
推荐指数
1
解决办法
381
查看次数