(toppers-users 2374) Re: 連続データストリームの受信について
Noda
dearliz @ jnb.odn.ne.jp
2006年 4月 1日 (土) 12:24:33 JST
小南様
Nodaです。
レスありがとうございます。
文面が解りにくくて申し訳ありません。以下、本文引用させていただき
回答いたします。
> 連続ストリームの受信というのが、具体的にどういう処理を意図され
> ているのかが
> 分かりません。
MP3データストリームの受信です。
インターネットラジオのようなものだと思っていただければ良いと思い
ます。
> Nodaさんの文面から、システムから意図した動作を示さない、あるい
> はシステム
> からの反応が得られないという状態なのかなと推測したのですが、そ
> うなのでしょう
> か。
以下のようなタスクを作って動作させると、wai_sem()を何度か
(2〜3回だったり、5〜6回だったり不定です)
呼んだ後に停止してしまいます。いわゆる「printfデバッグ」を
行なっているので、はっきりしたことは解らないのですが、
たぶんtcp_rcv_dat()から戻ってこないのでは?と思われます。
(タスクとは別に1秒間隔の周期ハンドラを動作させているのですが、
それは動いています。)
void task1( VP_INT exinf )
{
#define BUFF_SIZE 8192
UB buffer[BUFF_SIZE];
UW buf_size = BUFF_SIZE;
for ( ;; )
{
ercd = tcp_rcv_dat( cepid, (VP)buffer, buf_size, TMO_NBLK );
if ( ercd != E_WBLK || ercd == 0 )
{
break;
}
syscall(wai_sem(SEM_STREAM));
}
}
TCP_CFG_TRACEを有効にしてトレースログを出力してみると、
以下のようになっていました。(一部抜粋)
<I= 33.0=c: 1 s:ES f:0000:--A---- a: 144 s: 35962 w: 4096
l:1408==
<I= 33.0=c: 1 s:ES f:0201:--A---- a: 144 s: 43002 w: 4096
l:1152==
=O= 33.0=c: 1 s:ES f:0001:--A---- s: 144 a: 38778 w: 8192
l: 0=>
<I= 33.3=c: 1 s:ES f:0000:--A---- a: 144 s: 44154 w: 4096
l:1408==
<I= 33.3=c: 1 s:ES f:0201:--A---- a: 144 s: 45562 w: 4096
l:1408==
<I= 33.4=c: 1 s:ES f:0201:--A---- a: 144 s: 4602 w: 4096
l:1408==
<I= 33.4=c: 1 s:ES f:0201:--A---- a: 144 s: 6010 w: 4096
l:1408==
<I= 33.4=c: 1 s:ES f:0201:--A---- a: 144 s: 44154 w: 4096
l:1408==
<I= 33.5=c: 1 s:ES f:0201:--A---- a: 144 s: 45562 w: 4096
l:1408==
<I= 33.5=c: 1 s:ES f:0201:--A---- a: 144 s: 4602 w: 4096
l:1408==
<I= 33.5=c: 1 s:ES f:0201:--A---- a: 144 s: 6010 w: 4096
l:1408==
=O= 33.6=c: 1 s:ES f:0001:--A---- s: 144 a: 38778 w: 8192
l: 0=>
<I= 34.8=c: 1 s:ES f:0000:--A---- a: 144 s: 38778 w: 4096
l:1408==
<I= 34.9=c: 1 s:ES f:0201:--A---- a: 144 s: 45562 w: 4096
l:1408==
<I= 34.9=c: 1 s:ES f:0201:--A---- a: 144 s: 4602 w: 4096
l:1408==
<I= 34.9=c: 1 s:ES f:0201:--A---- a: 144 s: 6010 w: 4096
l:1408==
=O= 35.0=c: 1 s:ES f:0001:--A---- s: 144 a: 41594 w: 8192
l: 0=>
<I= 35.2=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.2=c: 1 s:ES f:0200:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.3=c: 1 s:ES f:0200:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.3=c: 1 s:ES f:0200:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.4=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.4=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.5=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.6=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.7=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.7=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.9=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<I= 35.9=c: 1 s:ES f:0000:--A---- a: 144 s: 46970 w: 4096
l: 0==
<-ここで停止
受信バッファは8192バイト用意しています。