如何快速使用套接字(连接,发送和获取消息)

阿瓦克松·乌拜杜拉耶夫

我是新人。我想为iPhone聊天,所以我需要使用客户端sokect。如何做到这一点。给我建议或示例PLZ。我尝试了这个https://github.com/socketio/socket.io-client-swift但没有连接并尝试了这段代码

 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)
     }

更改此代码后:

 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")
         })
     })
 }
阿列克谢·皮丘科夫(Alexey Pichukov)

我使用SwiftSocket https://github.com/swiftsocket/SwiftSocket进行TCP连接。它很容易使用。例如使用它(我给它添加注释):

我有使用该lib的包装器,这是如何发送请求和获取响应的方法:

    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)
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何快速连接到套接字以读取和写入数据

来自分类Dev

如何使用快速游乐场实现套接字连接?

来自分类Dev

如何使用Phoenix向特定的套接字发送消息

来自分类Dev

如何快速打开多个套接字连接?

来自分类Dev

如何使用cppzmq从ROUTER套接字向特定的DEALER套接字发送ZeroMQ消息?

来自分类Dev

使用python套接字发送消息

来自分类Dev

使用python套接字发送消息

来自分类Dev

Java Android使用套接字发送消息

来自分类Dev

如何使用XMPP框架获取消息的发送状态

来自分类Dev

用户套接字与服务器断开连接后如何发送消息

来自分类Dev

如何向通过套接字连接的特定客户端发送消息

来自分类Dev

Spring Integration和TCP服务器套接字-如何向客户端发送消息?

来自分类Dev

使用套接字发送和接收

来自分类Dev

使用原始ZMQ套接字发送和接收VIP(VOLTTRON互连协议)消息?

来自分类Dev

套接字编程使用C语言中的循环发送和接收消息

来自分类Dev

使用原始ZMQ套接字发送和接收VIP(VOLTTRON互连协议)消息?

来自分类Dev

如何取消通过套接字连接的FTP上传?

来自分类Dev

如何使用类ClientWebSocket通过Windows Phone 8上的Web套接字发送/接收消息?

来自分类Dev

如何使用python套接字在特定端口中发送消息?没有随机端口

来自分类Dev

使用Gmail API发送新消息后如何获取消息ID?

来自分类Dev

读取服务器使用套接字发送的消息的变量

来自分类Dev

如何在Web套接字连接中以无反应流的形式从订阅者向发布者发送消息

来自分类Dev

如何使用C#套接字TCP连接调度发送/接收数据

来自分类Dev

使用 vue 和套接字获取数据

来自分类Dev

从套接字读取消息挂起

来自分类Dev

如何通过套接字连接发送陀螺仪数据

来自分类Dev

套接字连接发送一条消息,但不再发送

来自分类Dev

HTTP 服务器如何使用 tcp 原始套接字检测和处理非 http 消息

来自分类Dev

如何使用Tcpclient从另一个类向所有连接的套接字连接发送数据

Related 相关文章

  1. 1

    如何快速连接到套接字以读取和写入数据

  2. 2

    如何使用快速游乐场实现套接字连接?

  3. 3

    如何使用Phoenix向特定的套接字发送消息

  4. 4

    如何快速打开多个套接字连接?

  5. 5

    如何使用cppzmq从ROUTER套接字向特定的DEALER套接字发送ZeroMQ消息?

  6. 6

    使用python套接字发送消息

  7. 7

    使用python套接字发送消息

  8. 8

    Java Android使用套接字发送消息

  9. 9

    如何使用XMPP框架获取消息的发送状态

  10. 10

    用户套接字与服务器断开连接后如何发送消息

  11. 11

    如何向通过套接字连接的特定客户端发送消息

  12. 12

    Spring Integration和TCP服务器套接字-如何向客户端发送消息?

  13. 13

    使用套接字发送和接收

  14. 14

    使用原始ZMQ套接字发送和接收VIP(VOLTTRON互连协议)消息?

  15. 15

    套接字编程使用C语言中的循环发送和接收消息

  16. 16

    使用原始ZMQ套接字发送和接收VIP(VOLTTRON互连协议)消息?

  17. 17

    如何取消通过套接字连接的FTP上传?

  18. 18

    如何使用类ClientWebSocket通过Windows Phone 8上的Web套接字发送/接收消息?

  19. 19

    如何使用python套接字在特定端口中发送消息?没有随机端口

  20. 20

    使用Gmail API发送新消息后如何获取消息ID?

  21. 21

    读取服务器使用套接字发送的消息的变量

  22. 22

    如何在Web套接字连接中以无反应流的形式从订阅者向发布者发送消息

  23. 23

    如何使用C#套接字TCP连接调度发送/接收数据

  24. 24

    使用 vue 和套接字获取数据

  25. 25

    从套接字读取消息挂起

  26. 26

    如何通过套接字连接发送陀螺仪数据

  27. 27

    套接字连接发送一条消息,但不再发送

  28. 28

    HTTP 服务器如何使用 tcp 原始套接字检测和处理非 http 消息

  29. 29

    如何使用Tcpclient从另一个类向所有连接的套接字连接发送数据

热门标签

归档