2017-12-13 13 views
0

SwiftでCocoaAsyncSocketと再生していて、UDPソケットにバインドしてローカルネットワーク経由でメッセージを受信して​​います。macOS上のソケットにバインドするときのNSPOSIXErrorDomain

私はソケットを初期化していて、ポートにバインドしようとしていますが、NSPOSIXErrorDomainエラーが発生しています。おそらく何らかのパーミッションの問題を示していますか?

マイコード:

import Cocoa 
import CocoaAsyncSocket 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate, GCDAsyncUdpSocketDelegate { 
    func applicationDidFinishLaunching(_ aNotification: Notification) { 
     let socket = GCDAsyncUdpSocket.init(delegate: self, delegateQueue: DispatchQueue.main) 
     do { 
      try socket.bind(toPort: 53401) 
     } catch let msg { 
      NSLog("Error....\(msg)") 
     } 
    } 
} 

全エラー:

Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" UserInfo={NSLocalizedDescription=Operation not permitted, NSLocalizedFailureReason=Error in bind() function} 
+0

私はObjective-Cで同じ問題があります。奇妙なことは、プロジェクトで提供されている 'UdpEchoServer'サンプルアプリケーションを実行すると、同じバインドコールが正しく機能することです。 – Jan

答えて

2

私はそれが結合することから防ぐ生成Xcodeの資格だと信じています。これらの値をfalseに変更しました。現在はバインドが動作します。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.security.app-sandbox</key> 
    <false/> 
    <key>com.apple.security.files.user-selected.read-only</key> 
    <false/> 
</dict> 
</plist> 
+0

あまりにも、ありがとう! – james246

関連する問題