2017-08-05 51 views
-1

我有一個tcp服務器讀取將文件內容發送到客戶端的文件。在Golang中,爲什麼conn.Write tcp響應是空的?

'status.txt'文件只包含一個布爾值。

當我捲曲時,這顯示true(與領先的空間)。

dat, err := ioutil.ReadFile("./status.txt") 
conn.Write([]byte(" " + string(dat))) 

鑑於此代碼的結果爲curl: (52) Empty reply from server

conn.Write([]byte(string(dat))) 

任何線索爲什麼發生這種情況?我不想填充我的響應字符串。

+0

'ioutil.ReadFile'返回字節片。因此,只需寫入'conn.Write(dat)'或寫入無需''conn.Write([] byte(「」+ string(dat)))''。 – jeevatkm

+0

@jeevatkm我試過兩種。我相信第一個回報是空的。第二個返回'%'。 –

+2

如果你的協議不是HTTP,你爲什麼使用curl?使用Netcat(nc localhost端口),它將工作。 –

回答

1

如果您不使用HTTP協議,請勿使用Curl。 Curl期待與HTTP協議兼容的特定格式的消息。 如果您發送文本爲「true」,那肯定是無效的HTTP標頭。

要測試TCP服務器就使用netcat來代替:

nc localhost port