Swift 4 OutputStream产生比输入更多的输出

时间:2018-10-02 01:58:27

标签: ios swift sockets stream

我一直在尝试快速使用流与Java套接字服务器接口(我不认为Java服务器是我的问题),但是当我尝试用OutputStream编写时,我的字符串包括一堆额外的垃圾,不在我的原始字符串中

当前代码如下:

var maxWriteLength = 4096
func sendMessage(msg: String) {
    let encodedDataArray = [UInt8](msg.utf8)
    outputStream.write(encodedDataArray, maxLength: maxWriteLength)
}

但是,当我给它输入“ hi”时,它返回的输出是:

  

回声:hi���8B��,r ؾ�؇��allowCloudBackup؇��allowAppInstallation؇��safariForceFraudWarning�&��q���ޙTh�C��=wthread��&��q��������������8$��N� �8$���0'} ��#� Echo: �'��q����������p�g�iYh�C���iYh�C��   回声:D�@D� 8״   回声:pV���؇��要求字母数字phan��allowCellularHDUploadsInternational-Key_2��

还有更多

我看过其他文章,建议您应该使用encodeDataArray.count而不是maxWriteLength,但是当我使用此方法时,OutputStream将不会编写任何内容。

谢谢。

1 个答案:

答案 0 :(得分:0)

对于未来的人们来说,这确实是服务器处理消息的方式(我回去检查它)。问题是我使用的是Scanner.nextLine(),而我的代码的swift部分中没有\ n。如果使用数组,请确保在将字符串添加为数组之前先添加+“ \ n”,否则将不会写入\ n的字节。最终代码如下所示:

func sendMessage(msg: String) {
    var finalMsg = msg + "\n"
    let encodedDataArray = [UInt8](finalMsg.utf8)
    outputStream.write(encodedDataArray, maxLength: encodedDataArray.count)
}