68user's page 掲示板

Prev< No. 4283〜4284> Next  [最新発言に戻る] [過去ログ一覧]
No. 4283 # nagadomi [E-mail] 2005/09/09 (金) 22:41:30
はじめまして。ネットワークプログラミングのページを参考にさせてもらっています。
で、以下の部分、
>>DNS クライアントを作ってみよう (3)
>リソースデータは「&Sorry, no version string is available」と表示されるが、
>dig や nslookup は「Sorry, no version string is available」となります (& がない)。
>先頭の & を削るような規則があるようだが、それが何なのかはわからなかった。

これ、'&'=38で、リソースのlengthみたいです。
きちんとした資料では、まだ見つけられていないのですが、
djbdnsのソースコード(dns_txt.c)上では、ドメイン名と同じように、
[length][data][length][data]と見ているようです。
リソースをいくつかのブロック(例えばライン毎など)に分けているのかなーと。

んん。標準な資料を探し中です。

No. 4284 # nagadomi [E-mail] 2005/09/09 (金) 22:44:42
>>4280 くま
Solaris8iは手元にないので試していないですが、shで。

---------------------------
#!/bin/sh

# デリミタを[,]に
IFS=,

# キーのリスト
list=""

# 計算
while read key value; do
                eval "if test -z \$array$key;then array$key=0; fi"
                eval \array$key=`eval "expr \\$array\$key + \$value"`
                list=$list,$key
done < data.txt

# 重複したキーを削除する
clone=`echo "$list" | sed 's/^,//'`
for key in $clone; do
                list=`echo "$list" | sed "s/$key//g" | sed 's/,[,]*/,/g'`
                list=$list,$key
done

# 表示
list=`echo "$list" | sed 's/^,//'`
list=`echo "$list" | sed 's/,$//'`

for key in $list; do
                echo -n $key,
                eval echo \$array$key
done
---------------------------
$ sh test.sh
001,60
002,5
003,35
004,100
---------------------------

効率悪そうだ..。

Prev< No. 4283〜4284> Next  [最新発言に戻る] [過去ログ一覧]