为了账号安全,请及时绑定邮箱和手机立即绑定

使用 net Write 发送数据\r\n 作为字符串而不是 eof 发送

使用 net Write 发送数据\r\n 作为字符串而不是 eof 发送

Go
HUH函数 2022-07-18 16:59:24
我想通过网络使用套接字发送'info\r\n'到redis服务器,发送数据是69 6e 66 6f 5c 72 5c 6e但我想发送数据是69 6e 66 6f 0d 0a,\r\n被视为一个字符串错误变成 5c 72 5c 6e发送数据是代码中的字符串我将字符串转换为 []byte 和 conn.write这个发送似乎是错误的,正确的发送方法是什么?
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您的数据69 6e 66 6f 5c 72 5c 6e是:


b := []byte{0x69, 0x6e, 0x66, 0x6f, 0x5c, 0x72, 0x5c, 0x6e}

fmt.Printf("%q\n", string(b))

哪个输出:


"info\\r\\n"

它包含一个反斜杠、一个r、另一个反斜杠和一个n字符。


你想发送一个回车\r和一个换行符\n,你不必发送这些“字面意思”。\r并且\n是单字节数据,而不是 2 字符序列。


您的数据应该是:


b = []byte{0x69, 0x6e, 0x66, 0x6f, '\r', '\n'}

fmt.Printf("%q\n", string(b))

哪个输出:


"info\r\n"

或者简单地说:


b = []byte("info\r\n")

fmt.Printf("%q\n", string(b))

哪个输出相同。试试Go Playground上的示例。


知道字符串文字"info\r\n"是解释字符串文字,\r其中的\n序列将被解释为单个字符(回车符和换行符)。这在Spec: String literals中有详细说明。


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号