SSブログ

あれの開発記 22ページ目 [ColdFire V1]

※一生懸命作ったので、宜しければ投票お願いします。http://www.freescale.co.jp/event/FTFJ/index.html
フリスクメンバーのログインが必要です。
Img_0671.jpg今までの結果は多分、「シリアルコンソールから操作したからこうなった」と言う事ではなく、基本的にプロトコルスタック自体が持っている問題に思えます。

Interface誌の手順で行うと、
1.PCからtelnetでネットワークボードに接続する
2.telnetで接続したPC向けにmainを実行させる

となり、telnetで接続した時点でARP交換が行われ、ARPテーブルの更新が完了している為に、シリアルコンソールで起きたような問題が出なかっただけだと思います。
多分以下の構成で行った時は、同様の問題が発生するのではないでしょうか。
1.telnetで接続するPCと、UDPの結果を見る別のPCを用意する
2.操作側PCからtelnetでネットワークボードに接続する
3.結果を見る方のPC向けにmainを実行させる

そこで、Mainを以下の様に作り変えました。

main( char *s )
{
  char *d,soc = CreateSocket( 0 );
  long ip = GetIP( s );
  int n,r;
  d = MemoryAlloc( 6 );
  for( n = 0; n < 10000; n++ )
  {
    GetDigit( n, d );
    if( (r = SendTo( soc, ip, 30049, d, StrLen( d ) )) == 0 )
    {
      n--;
      continue;
    }
    else if( r < 0 )
    {
      PrHex( r );
      break;
    }
    else ;
  }
  CloseSocket( soc );
  MemoryFree( d );
}


※戻り値が0の時の条件式が、時には無限ループに陥る危険があるので、本当はここにもリミッターを入れるべきでしょう。
※まあしかし、エラー等を返す戻り値は常にチェックを入れる事が必要なんだと、あらためて思いましたよ。

Interface (インターフェース) 2008年 10月号 [雑誌]

Interface (インターフェース) 2008年 10月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/08/25
  • メディア: 雑誌



Interface (インターフェース) 2008年 09月号 [雑誌]

Interface (インターフェース) 2008年 09月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/07/25
  • メディア: 雑誌



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。