我一直在尝试快速使用流与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将不会编写任何内容。
谢谢。
答案 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)
}