私は言語に行く初心者です。 httpクライアント/サーバーを開発するためにgo言語を使用する予定です。私はパッケージ でソケットオプションを設定する方法を見つけていないHTTPクライアントパッケージでサポートされる機能のリストを閲覧しながら は(私はそれを使用する方法がわからないこともあります)。私は、httpクライアント接続を呼び出す前に、fdにDSCPオプション(IP_TOS)を設定する必要があります。 (ソケットオプションを設定するsyscallオプションがありますが、httpパッケージからfdを取得する方法はありません)。HTTPクライアントのソケットオプション(IP_TOS)をgo言語で設定するには?
httpサーバー側では、ソケットオプション(IP_TOS)を設定できます。 コードの抜粋:HTTPクライアント側で
tcpListener,err := net.ListenTCP("tcp4", addr)
if err != nil {
//fmt.Println("error in listen", err.error())
log.Fatal("net.ListenTCP()", err)
}
//get lisenet socket fd
f, _ := tcpListener.File()
err = syscall.SetsockoptInt(int(f.Fd()), syscall.SOL_SOCKET, syscall.IP_TOS, 128)
、ソケットFDと設定ソケットオプション(IP_TOS)を取得することができません: (私はNewRequestを呼び出す前にIP_TOSを設定したい)
client := &http.Client{
Transport : tr,
//Timeout: time.Duration(10) * time.Second,
}
request, err := http.NewRequest("POST", url, body)
if err != nil {
panic(err)
}
response, err := client.Do(request)
ありがとうございます!
お返事ありがとうございました。上記のコードをサンプルプログラムでテストしましたが、ソケットオプションIP_TOSの値は、httpクライアントから開始されたsynパケットに設定できませんでした。ここでは、DialContext(ctx、network、addr)に引数を渡しながら、ctxとして渡すコンテキストを作成する方法について疑いがあります。現在私は** DialContext(context.Background()ネットワーク、addr)**を使用していましたか? –
@ManojSaha編集して試してみてください。動作しているかどうかに関係なく、Go発行トラッカーの機能を要求して、何らかの形でFDの設定オプションを許可したい場合があります。 –
あなたの努力のおかげで再び!私はサンプルプログラムでテストしましたが、dscpの設定が成功したためapiを設定し、dscpのget apiを使ってdscp値を読むことができましたが、synパケットのtcp接続要求に反映されません。それでも私はdscpが0であると思っています。 –