NetServer with uIP
NetServerを経由してのパケットの送信です。
uIP上でのパケット送信には2種類あって
- パケット受信ループからそのコネクションに対してパケット送信
- コネクションをオープンして送信
前者の場合はWebサーバーが動いたときに検証済みだったのですが、後者を今日試してみたところ動きませんでした。
http://www.sics.se/~adam/uip/uip-0.9-refman/main.htmlにあるドキュメントによれば、
u16_t ipaddr[2]; uip_ipaddr(ipaddr, 192,168,0,1); uip_connect(ipaddr, HTONS(80));
のように接続しておいて、アプリケーションのイベントループで
if(uip_connected() || uip_rexmit()) { uip_send((volatile u8_t*)"GET /file HTTP/1.0\r\nServer:192.168.100.2\r\n\r\n", 48);
このように接続が確立された状態であるときにuip_sendすればよいことになっています。
これをやってみたのですがぜんぜん動かなくてソースをいろいろいじって見て分かりました。
main.cでメインループがあり、ループの一番最初にデバイスからreadしています。
while(1) { uip_len = pcapdev_read();
そしてそこのコメントをちゃんと読むと
/* Let the pcapdev network device driver read an entire IP packet
into the uip_buf. If it must wait for more than 0.5 seconds, it
will return with the return value 0. If so, we know that it is
time to call upon the uip_periodic(). Otherwise, the pcapdev has
received an IP packet that is to be processed by uIP. */
今見れば、一目瞭然なのですが、pcapdev_readがデータ受信するまでブロックしていたらその先に行かない・・・orz
というわけでWinPcapを利用してタイムアウトつきで受信するように変えなければいけないようです。
今日はここまで
全然関係ないですが、乱高下は、「らんこうげ」と読むんですね。
この言葉を人生で口に出していったことがなかったからセーフですが「らんこうか」だと思ってました。
プロフィール画像とfavicon.ico
masayu-iさん(http://masayu-i.seesaa.net/)にプロフィール画像とfavicon.icoを作っていただきました。
ありがとうございます!>masayu-iさん
気に入ったのでしばらくこれで行きます。
感想等はコメント欄へどうぞ。
Effective STLとGet2Cash
![Effective STL―STLを効果的に使いこなす50の鉄則 Effective STL―STLを効果的に使いこなす50の鉄則](https://images-fe.ssl-images-amazon.com/images/I/41W5R878R7L._SL160_.jpg)
Effective STL―STLを効果的に使いこなす50の鉄則
- 作者: スコットメイヤーズ,Scott Meyers,細谷昭
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2002/01
- メディア: 単行本
- 購入: 9人 クリック: 155回
- この商品を含むブログ (95件) を見る
でも古本で見つからないなぁ。。。
そういえば小切手換金サービスのGet2Cashの支払いが遅れているとの話を聞きますが進展はあったのかなぁ。
以前何回か利用していたので気がかりです。
換金していない小切手が2枚あるんだけどどうしよう。