dポイントプレゼントキャンペーン実施中!

こんにちわ。質問させて頂きます。

C言語で、pcap.hによってキャプチャされたパケットのタイムスタンプ(秒)を、標準時間と申しますか、時:分:秒に直したいと考えています。

時間変換の関数で、ctime,asctime,localtime等があるのは分かっているので、localtime関数を使おうと思っているのですが、使ってみたところポインタのタイプが違うのでエラーが出てしまいます。

具体的には、
方法(1):time_t変数に代入してやってみる
struct tm *t_st;
time_t timer;
timer = header->ts;
t_st = localtime (&timer);
方法(2):localtime関数に直接放り込む
t_st = localtime (&header->ts);

等を試してみたのですが当然アウトでした。

パケットヘッダの中の時間を表すheader->tsをどうにかlocaltime関数で使いたいと考えています。

これを解決する良い方法はあるでしょうか。
ご存知であればご教授いただけないでしょうか。どうぞよろしくお願いします。

A 回答 (2件)

time_t timer;


timer = header->ts;
t_st = localtime (&timer);
これでok
t_st->tm_mday
に日付が入ってます

駄目だったとしたらこの部分か
timer = header->ts;
パケットから持ってきたままだと ASCIIの可能性も
    • good
    • 0
この回答へのお礼

ご回答有難う御座いました。
timer = header->ts.t_sec
とすると嘘のようにすんなり行くことが出来ました。

お礼日時:2008/11/27 02:30

こういう質問をする場合、headerの型がなんであるかを示してください。


今回はどうやらstruct pcap_pkthdrらしいという推測はつきますが。

で、header->tsの型はstruct timevalでlocaltimeが引数に要求するのはconst time_t *なので当然このままでは入れられません。
struct timevalの定義を見ればどうすればいいかの答えはわかるはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!