Winsockを使ってネットワークカメラを制御するプログラムを作成しています。
使用しているカメラはBB-HCM100です。
処理手順は:
1)ソケットの作成---socket()
2)サーバ(ネットワークカメラ)のIPアドレスとポート番号を設定
3)サーバに接続---connect()
4)サーバに GET リクエストを送信---send()
5)サーバからデータを受信---recv()
6)受信データの処理
4)のGETリクエストを送信する処理は、以下のような文字列をsendの二番目の引数とした。
char *reqbuf[] = {
"GET /SnapshotJPEG?Resolution=320x240&Quality=Standard HTTP/1.1\r\nAuthorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxx==\r\n"
};
xxxxxxxxxxxxxxxxxxxxxxxxxxのところにネットワークカメラのユーザーIDやパスワードをBase64で変換した文字列が入る。
問題はsend()をした後、ネットワークカメラからの応答に異常に時間がかかってます。Wiresharkで確認したところ、約55秒かかってます。
このようなことが起こる原因について、だれか教えてください。
よろしくお願いします。
うろおぼえですが…
GETは最後に空の改行が要ったような記憶が
reqbufの文字列の最後にもう1セット"\r\n"を追加してみては?
とおりすがりさんの言うとおりでした。
"\r\n"を追加したら、応答パケットがすぐに返ってきました。
ありがとうございました。
ツイート | ![]() |