尝试连接时,Peertalk套接字连接返回-1

时间:2019-05-22 06:07:13

标签: ios objective-c swift macos sockets

我正在创建一个在Mac和iPhone之间通信的应用程序。我为此使用Peertalk

我只是将Peertalk核心文件复制到我的项目中并运行,但是套接字连接返回-1

  // Connect socket
  struct sockaddr_un addr;
  addr.sun_family = AF_UNIX;
  strcpy(addr.sun_path, "/var/run/usbmuxd");
  socklen_t socklen = sizeof(addr);
  if (connect(fd, (struct sockaddr*)&addr, socklen) == -1) {
    if (error) *error = [[NSError alloc] initWithDomain:NSPOSIXErrorDomain code:errno userInfo:nil];
    return NO;
  }

但是当我运行原始代码时,连接成功,并且得到了PTUsbHub对象,并且连接返回了success值。

obj c中的示例代码

- (void)startListeningForDevices {
  NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

  [nc addObserverForName:PTUSBDeviceDidAttachNotification object:PTUSBHub.sharedHub queue:nil usingBlock:^(NSNotification *note) {
NSNumber *deviceID = [note.userInfo objectForKey:@"DeviceID"];
    //code to connect 
  }];

  [nc addObserverForName:PTUSBDeviceDidDetachNotification object:PTUSBHub.sharedHub queue:nil usingBlock:^(NSNotification *note) {
    NSNumber *deviceID = [note.userInfo objectForKey:@"DeviceID"];
    //code to disconnect
  }];
}

我的快捷代码

@objc private func startListening(){
    let nc = NotificationCenter.default
    nc.addObserver(forName: NSNotification.Name.PTUSBDeviceDidAttach, object: PTUSBHub.shared(), queue: nil) { (notification) in
        let deviceID = notification.userInfo?["DeviceID"] as? NSNumber
    }


    nc.addObserver(forName: NSNotification.Name.PTUSBDeviceDidDetach, object: PTUSBHub.shared(), queue: nil, using: { note in
        let deviceID = note.userInfo?["DeviceID"] as? NSNumber

  }

所以问题是我没有收到连接或分离通知,因为连接失败。

是否需要任何许可?还是您可以找出真正的问题是什么?

预先感谢

1 个答案:

答案 0 :(得分:0)

最后,我发现了我的错误。这是关于应用程序沙箱的。您可以阅读有关沙盒的文章

  1. https://developer.apple.com/documentation/security/app_sandbox_entitlements
  2. https://developer.apple.com/app-sandboxing/

它是mac的安全功能。

我只是取消选中了应用程序沙箱,它可以正常工作。

谢谢