英文:
In Golang, why is conn.Write tcp response empty?
问题
我有一个TCP服务器,它读取一个文件并将文件内容发送给客户端。
status.txt
文件只包含一个布尔值。
当我使用curl时,它显示为true
(带有前导空格)。
dat, err := ioutil.ReadFile("./status.txt")
conn.Write([]byte(" " + string(dat)))
而这段代码会导致curl: (52) Empty reply from server
错误。
conn.Write([]byte(string(dat)))
你知道为什么会发生这种情况吗?我不想在响应字符串中添加空格。
英文:
I have a tcp server that reads a file that sends the file content to the client.
The 'status.txt' file contains only a boolean.
When I curl, this shows true
(with leading space).
dat, err := ioutil.ReadFile("./status.txt")
conn.Write([]byte(" " + string(dat)))
Whereas this code results in curl: (52) Empty reply from server
.
conn.Write([]byte(string(dat)))
Any clue why this happens? I don't want to have to pad my response string.
答案1
得分: 2
如果您不使用HTTP协议,请不要使用Curl。Curl期望的消息格式与HTTP协议兼容。
如果您发送文本"true",那肯定不是有效的HTTP头。
要测试TCP服务器,请改用Netcat:
nc localhost 端口
英文:
Don't use Curl if you are not using HTTP protocol. Curl is expecting certain format of the message that is compatible with HTTP protocol.
If you send text "true", that is for sure not valid HTTP Header.
To test TCP server use Netcat instead:
nc localhost port
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论