2015-10-30 22 views
5

Jestem nowy szybki. Chcę tworzyć czat dla iPhone'a, więc muszę używać klienta sokect. jak to zrobić. daj mi radę lub przykład plz. Próbowałem to https://github.com/socketio/socket.io-client-swift ale niepodłączony i próbowałem ten kodjak używać gniazda w Swift (podłącz, wyślij i otrzymam wiadomość)

let client:TCPClient = TCPClient(addr: "89.236.254.27", port: 9000) 
    let (success,errmsg) = client.connect(timeout: 1) 
    if success { 
      let (success,errmsg) = client.send(str:"Hello World!") 
      if success { 
       let data = client.read(1024 * 10) 
       if let d = data { 
        if let str = NSString(bytes: d, length: d.count, encoding: NSUTF8StringEncoding) { 
         print(str) 
        } 
       } 
      } else { 
       print(errmsg) 
      } 
    } else { 
      print(errmsg) 
    } 

po zmianie tego kodu:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let qualityOfServiceClass = QOS_CLASS_BACKGROUND 
    let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0) 
    dispatch_async(backgroundQueue, { 
     let client:TCPClient = TCPClient(addr: "89.236.254.27", port: 9000) 
     var (success, errmsg)=client.connect(timeout: 1) 
     if success { 
      var (isSuccess, errorMessage) = client.send(str: "Hello!") 
      if success { 
       let data = client.read(1024 * 4) 
       if let d = data { 
        if let str = NSString(bytes: d, length: d.count, encoding: NSUTF8StringEncoding) as? String { 
         print(str) 
        } 
       } 
      } else { 
       print(errmsg) 
      } 
     } else { 
      print(errmsg) 
     } 
     dispatch_async(dispatch_get_main_queue(), { 
      () -> Void in 
      print("This is run on the main queue, after the previous code in outer block") 
     }) 
    }) 
} 
+0

NSStream lub firm trzecich Pszczoła. Moim ulubionym jest [CocoaAsyncSocket] (https://github.com/robbiehanson/CocoaAsyncSocket), ja również pracuję nad szybką wersją, sprawdź to [Swidis] (https://github.com/FarhadNezhad/Swidis) (Still Beta tho) – Xrait

+0

Spróbuj tego https://github.com/swiftsocket/SwiftSocket Jest łatwy w użyciu. Jeśli spróbujesz i nie zrozumiesz pewnych rzeczy, napisz tutaj komentarze –

+0

alex_p dzięki za odpowiedź, SwiftSocket podłączony, ale nie mogę odbierać danych. plz daj mi przykład –

Odpowiedz

5

Używam połączenia SwiftSockethttps://github.com/swiftsocket/SwiftSocket dla TCP. Jest łatwy w użyciu. Na przykład za korzystanie z niego (i dodawać komentarze do niego):

Mam otoki dla pracy z tym lib i jest to metoda, jak wysłać wniosek i uzyskać odpowiedzi:

private func blockingRequest(data: String, client: TCPClient?) -> (data: String?, error: ConnectionError?) { 
     // It use ufter connection 
     if client != nil { 
      // Send data 
      var (isSuccess, errorMessage) = client!.send(str: data) 
      if isSuccess { 
       // Read response data 
       var data = client!.read(1024*10) 
       if let d = data { 
        // Create String from response data 
        if let str = NSString(bytes: d, length: d.count, encoding: NSUTF8StringEncoding) as? String { 
         return (data: str, error: nil) 
        } else { 
         return (data: nil, error: ConnectionError.BadResponseData) 
        } 
       } else { 
        return (data: nil, error: ConnectionError.BadResponseData) 
       } 
      } else { 
       println(errorMessage) 
       return (data: nil, error: ConnectionError.RequestError) 
      } 
     } else { 
      return (data: nil, error: ConnectionError.RequestError) 
     } 
    } 
+0

i podłączony, ale po wysłaniu danych, serwer otrzymał wiadomość po zatrzymaniu symulatora. dlaczego tak jest? –

+0

@AvazxonUbaydullayev Czy możesz udostępnić link do swojego projektu, aby zobaczyć, jaki jest problem, ponieważ bardzo trudno jest powiedzieć coś bez kodu –

+0

alex_p, pobierz mój projekt ten link: https://drive.google.com/open?id= 0B3ShmF_Xwo0_eTNhYV83Y3dhOWs. ten projekt udostępnił wszystkim –

0

NSStream lub Third-Party API. Moim ulubionym jest CocoaAsyncSocket, Im pracuje również na szybkiej wersji siebie, to sprawdzić Swidis Still (Beta)

również wspomnieć o CocoaAsyncSocket trzeba będzie obejmują bridge-header.h użyć jako szybka.

+0

Twoje powitanie, mam nadzieję, że dostanę głos lub sprawdź :) – Xrait

Powiązane problemy