2017-02-05 3 views
0

シンプルなソケットサーバーです。別のクラスから呼び出された場合、CocoaAsyncSocketサーバーは起動しません

クラスを削除してserverSocketという変数を入れてクラス内のstartSocketServerクラスの機能を使用すると、ソケットサーバーがリスニングを開始します。

私はlsof -i :6000コマンドでソケットがリッスンを開始したかどうかを確認します。

何が間違っていますか?

import UIKit 
import CocoaAsyncSocket 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let server = Socket() 
     server.startSocketServer() 
    } 
} 

class Socket: NSObject, GCDAsyncSocketDelegate { 
    var serverSocket = GCDAsyncSocket() 

    /// Staring socket server 
    func startSocketServer() { 
     self.serverSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) 
     do { 
      try serverSocket.acceptOnInterface(nil, port: 6000) 
     } catch { 
      print("Port access failed") 
     } 
    } 
} 

答えて

0

私は解決策を見つけた:

私はSocketクラス定義置く:私の問題を修正しviewDidLoad機能のうち、let server = Socket()を。

class ViewController: UIViewController { 

    let server = Socket() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     server.startSocketServer() 
    } 
} 
関連する問題