在斯威夫特发送消息在TCP(NULL终止)

问题描述:

我使用SWIFT socket库用下面的代码:在斯威夫特发送消息在TCP(NULL终止)

let client:TCPClient = TCPClient(addr: "127.0.0.1", port: 8080) 
var (success,errmsg)=client.connect(timeout: 1) 
if success{ 
    var (success,errmsg)=client.send(str:"|~\0") 
    if success{ 
     let data=client.read(1024*10) 
     if let d=data{ 
      if let str=String(bytes: d, encoding: NSUTF8StringEncoding){ 
       print(str) 
      } 
     } 
    }else{ 
     print(errmsg) 
    } 
}else{ 
    print(errmsg) 
} 

代码工作不错,但我的问题是,我的服务器获取数据,而空终止符,正如您在下一个链接中看到的那样:https://gyazo.com/1a6576b515d37c9400a58ac67bfa2350 我该怎么办?

假设您使用的是this library,执行TCPClient.send(str:)时存在一个错误,因为它使用strlenthis linestrlen将终止在第一个NUL字符。

你的代码更改为:

var (success, errmsg) = client.send(data:Array<UInt8>("|~\0".utf8)) 

,你应该是好

+0

你使我的解决方案! 解决方案: let str =“test” let byteArray = [UInt8](str.utf8) –

+0

Thanks lot @Stuart Carnie –