在斯威夫特发送消息在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:)
时存在一个错误,因为它使用strlen
每this line。 strlen
将终止在第一个NUL
字符。
你的代码更改为:
var (success, errmsg) = client.send(data:Array<UInt8>("|~\0".utf8))
,你应该是好
你使我的解决方案! 解决方案: let str =“test” let byteArray = [UInt8](str.utf8) –
Thanks lot @Stuart Carnie –