2017-08-05 5 views
-1

ファイルの内容をクライアントに送信するファイルを読み取るtcpサーバーがあります。Golangでは、conn.Write tcp responseが空であるのはなぜですか?

'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番目の引数は '%'を返します。 –

+2

あなたのプロトコルがHTTPでない場合は、なぜカールを使用していますか? Netcat(nc localhost port)を使うと動作します。 –

答えて

1

HTTPプロトコルを使用していない場合は、Curlを使用しないでください。 Curlは、HTTPプロトコルと互換性のある特定の形式のメッセージを期待しています。 テキストを「true」に送信すると、有効なHTTPヘッダーではありません。

代わりにTCPサーバーの使用Netcatををテストするには:

nc localhost port 
関連する問題