Skip to main content

ログ取得ツール

TCPでsendmsg()を使う

TCPでsendmsgによりiovecでscatter/gatherなバッファから送信した場合。 MTUにおさまる限り、正しく1つのパケットになります。etherealで角煮を…じゃない、確認してみた。まあ当然そうあるべき、と思っていたがちゃんと確認したのは初めて。コピーがどう起こるのかは知らない。 カーネル(TCPドライバ? Etherドライバ?)がユーザ空間からのコピーついでにつなげてるのか、Etherのハードまでs/gでいってハードがつなげて送ってるのかは知らない。まあでもTCPだし1つのバッファにコピーしてるんだろうな。まあそんなことはどうでもいい。使おうこれ。 …後で読んでも意味不明だろうな。


#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main(int argc, char **argv)
{
  int s, flags=0, r;
  struct msghdr msg;
  struct iovec iov[2];
  struct sockaddr_in addr;
  int addrlen=sizeof(addr);
  const char *testdata1="test.\n";
  const char *testdata2="test2.\n";
  
  s=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  if(s==-1){ perror("socket"); return -1; }
  addr.sin_family=PF_INET;
  addr.sin_port=htons(9999);
  addr.sin_addr.s_addr=inet_addr("XXX.XXX.XXX.XXX");
  r=connect(s, &addr, addrlen);
  if(r==-1){ perror("connect"); return -1; }
  iov[0].iov_base=testdata1;
  iov[0].iov_len=strlen(testdata1);
  iov[1].iov_base=testdata2;
  iov[1].iov_len=strlen(testdata2);
  msg.msg_name=NULL;
  msg.msg_namelen=0;
  msg.msg_iov=iov;
  msg.msg_iovlen=2;
  msg.msg_control=NULL;
  msg.msg_controllen=0;
  msg.msg_flags=0;  // MSG_OOB|MSG_DONTROUTE|MSG_DONTWAIT|MSG_NOSIGNAL
  r=sendmsg(s, &msg, flags);
  printf("sendmsg(%d, %p, %d)=%d\n", s, &msg, flags, r);
  if(r==-1){
    perror("sendmsg");
  }
  close(s);
  return 0;
}

(前略)
0020  XX XX b4 61 27 0f c3 81  52 18 c3 98 f6 75 80 11   XX.a'... R....u..
0030  7f ff 5b d2 00 00 01 01  08 0a 00 d9 9b c7 00 d9   ..[..... ........
0040  9b c7 74 65 73 74 2e 0a  74 65 73 74 32 2e 0a      ..test.. test2.. 
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

アドレスを隠す意味などあるのだろうか??

電気代

昨日電気代の紙がポストに入っていて、かなり増大していた。このサーバのせいか、エアコンのせいか。あるいは両方か。 まったく、節電全盛の時代に逆行している。 関係ないけど、いちいち消したりつけたりするのは面倒だから、トイレをセンサーライトとかにしようかという計画を思いついた。今度調べてみようと思う。 ちなみにこのグラフはOpenOffice.org(openoffice.org)で書きました。変換する過程でちょっと汚くなってしまった… (追記) 2003-08-05 22:16 こんなページ(eccj.or.jp)を見つけた。家庭の待機電力の割合。ビデオデッキがでかい。たぶん、SonyのCocoonはもっとでかいだろう。だいたい独身男性で193kWh/月ってのが多いのか少ないのか知りたいなぁ。 とりあえずサーバの消費電力を計測するために、そのへんに転がっていた積算電力計のエコワット(dcac.co.jp)をかましてみた。 (追記) 2003-08-07 07:32 計測結果。33.2時間で0.36kWhになった。1日0.26kWh。1ヶ月にして8kWh程度だ。つまりサーバを上げたせいではない。他にも計測してみようと思う。 (追記) 2003-08-07 24:18 無線LANのアクセスポイント、16時間で0.16kWh。1日0.24kWh、1ヶ月7.2kWh程度。こいつもちょっと食いすぎ感はあるものの、極悪ではない。 やはりCocoonかなぁ。 (追記) 2003-08-09 10:30 本命とも言える、エアコンにつけてみた。こいつが元凶っぽい。「普通の」生活をしたつもりだが、33時間で2.74kWh。1ヶ月で60kWhくらいかな。梅雨の季節に部屋干しを高速に乾かすため&自分用にも、「からっと除湿白くまくん」がけっこう稼働していた。まあ、原因が判明すりゃそれでいい。 (追記) 2003-09-02 21:56 今月の電気代はちょっと減っていた。

真のファンキーとは?

ちょっとファンキーデイズ!(Lead)(yahoo.co.jp)を聴いて、真のfunky(reference.com)とは何か、を思う。 とりあえずRhymeZoneでfunky(rhymezone.com)を探してみたが、要はある種のmonkey(coara.or.jp)みたいなものらしい。 (追記) 2003-08-05 16:21 乾いた大地を歩き続きよう、たとえ迷子になっても…といわれたので、今日は歩って家まで帰ろうと思った。きっとたどりつくそうだ。そこに真のファンキーが見つかるかもしれない。 (追記) 2003-08-05 18:42 「乾いた」どころか夕立だったので電車で帰った。駅から走ってどうにかかわした。歩くのは明日だ。ファンキーへの道は遠い。

見やすさ

今日はNPO系を称する(実体はよくわからない)http://www.janjan.jp(janjan.jp)のRSSフィルタを書いて、URL-TODAY(so-net.ne.jp)を改善してみた。あらためて眺めてみて、こりゃさすがに縦長すぎるわい、と考えた。カテゴリ分けしてページを分割するとか、タブ的に切り換えるようなデザインにするか…いろいろ案はあるのだが、とりあえず安直な方法を試してみた。そこで。 3段組(mydns.jp)と2段組(mydns.jp)のどちらが優れているのか。 このように意味が独立した段組だと、人間は2段組までだと思う。しかし訓練すれば3段組も可能かもしれない。…訓練するほどのことか?? 段をもっと工夫すれば3段組でも見やすくなるという確信はある。今はどうも脈絡がなく並んでいるので…。まあ、いずれこれもWebからカスタマイズできるようにしたいとは思う。ブックマークがスケーラブルじゃないのはちょいとみっともないかも。ツリー構造っぽく見せようかな…