[
新規
] - [
ツリー
] - [
スレッド
] [
未解決
] [
緊急
] - [
優先
] - [
検索
] - [
なでしこTOP
]
「なでしこv1」開発掲示板
なでしこv1のバグや要望を書き込む掲示板
→
書き込み(
#2036
)を編集する:
名前
タイトル
本文
【症状】nakonetのUDPコンポーネントを利用して受信した場合、アプリケーションエラーとなってしまう。 【再現方法】以下のソースで確認(ただし、動作するかどうかはネットワーク環境に依存します) ----- !変数宣言は必要 !初期化は必要 !「nakonet.nako」を取り込む。 CRとは文字列。 LFとは文字列。 CRLFとは文字列。 パケット1とは文字列。 接続状態とは整数 CR=「{\13}」 LF=「{\10}」 CRLF=「{CR}{LF}」 //※パケット1の中身は1行です。改行されてしまっていたら、つなげてください。 パケット1=「M-SEARCH * HTTP/1.1{CRLF}MX: 3{CRLF}HOST: 239.255.255.250:1900{CRLF}MAN: "ssdp:discover"{CRLF}ST: upnp:rootdevice{CRLF}{CRLF}」 //upnp:rootdevice //ssdp:all 「起動中」と表示 接続状態は0 サーチとはUDP。 サーチのホストは「239.255.255.250」。 サーチのポートは1900。 サーチの受信した時は~ 「受信!」を表示 サーチ→受信データを表示 サーチの接続した時は~ 「接続!」を表示 接続状態は1 サーチのエラー時は~ 「えらー:{サーチ→エラーメッセージ}」を表示 サーチの接続 1秒待つ 接続状態が0と等しいの間 1秒待つ 「時間経過・・・」と表示 パケット1を表示 パケット1をサーチの送信 「送信・・・?」を表示 10回 1秒待つ 「時間経過・・・」と表示 「時間切れ」と表示 サーチを切断 「UDP切断」と表示 ----- 【要望】エラーとならず、処理を継続したい。 【バージョン】ソースリポジトリ上のrev273 【その他】 おそらくは、内部実装の変更の際に、変更漏れで中途半端な実装になっているようです。 以下の2ファイル、3か所の修正が必要。 TNakoUdpのメンバのInstanceVarを削除。どこからも設定がされてない。 ------- KTCPW.pas InstanceName: string; udpid: Integer; procedure setEvent; ------- TNakoUdp.RecvDataにてInstanceVarを使う方法からInstanceNameの方法に変更。設定されないメンバ変数を参照してエラーになっている。 ------- KTCPW.pas Move(pData^, s[1], len); s := InstanceName + '→受信データ=『' + s + '』;'; nako_evalEx(PANsiChar(s), p); nako_var_free(p); // DoEvent('受信した時'); ------- TKUdpSocket.WndProc内のRecvPakcetの受信バイト数の変数はlenじゃなくてcnt。lenはaddr構造体の長さ。 ------- UdpUnit.pas if Assigned(FOnRecieve) then begin FOnRecieve(Self, @RecvBuf[1], cnt); end; -------
優先度
低
中
高
緊急
状態
未処理
詳細求む!
調査中
議論中
修正中
確認待ち
再修正依頼
解決
---
重複
---
アイデア
感想
告知
感謝
確認キー
👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。
編集キー
編集時に使うキーを入力(省略可能)
添付ファイル
🎁
ファイルを選択...
画像ファイル(最大300KB)を添付可能