いつもお世話になります。
CPU:SH7750Rを使用して、UDP通信の送受信ソフトウェアを作成しており
UDP通信部はT4ライブラリを使用してプログラムを実装いたしました。
UDPのプログラムはサンプルソースコードの通り、コールバック関数を利用して
文字列の送信プログラムを作成いたしました。(1000byte:100ms)
そこでお伺いしたいことが有り、UDPの送信を定周期(100ms)で行っており
udp_snd_dat()関数を実行。TMO_NBLKを指定。
接続先のタームソフトで文字列が正しく送られているのは確認が出来ましたが、
その後、LANケーブルを抜いたり、またタームソフトを落とすと
CPUの動作が重くなる事象が発生しました(デバッガー等で調査を行うと、udp_snd_dat()関数を実行した後に、
相手のタームソフト等でモニタしているときは関数実行後即座にコールバック関数が呼ばれていたのが、LANケーブル切断や
タームソフト終了を行っている状態で、udp_snd_dat()関数を実行すると関数自体は即座に実行されるのにコールバック関数が
呼ばれるのが3~4秒程度処理がかかる事象を見つけました)
UDP通信(WireShark)で確認すると接続処理や切断処理、3ハンドシェイクも行わない為、なぜLANケーブルを抜いていた状態で
コールバック関数呼び出しのudp_snd_dat()関数を実行した際に、コールバック関数の呼ばれる時間が掛かるのか、
もし誰か分かりましたらご連絡宜しくお願い致します。
rkshさん 詳しくはシェルテイさんと思いますが、その事象はありうる事だと思います、途中でLANケーブルを抜いたり、ターミナルを落としたりしたとき、それが通信の実行中と重なった時には、T4ライブラリは一定時間を待つと思いますので、そういうことになると思います、間違いかもしれませんが一応考えられることはそうなります。