- 1 名前:デフォルトの名無しさん mailto:sage [04/08/28 09:50]
- The Indy Project
www.indyproject.org/ ./\ /\ /:::::::ヽ____/::::::::ヽ、 / ::. _ .::::::::::::: _::::ヽ_ / / °ヽ_ヽv /:/ °ヽ::::::ヽ / /.( ̄( ̄__丶 ..( ̄(\ ::::| ぐぐってもわかんないよ〜 . | .:::::::: ) )/ / tーーー|ヽ) ) .::::: ::| . | .::::...( (..||. | ( ( ::| だれかたすけて〜 . | :::. ) )| |⊂ニヽ .| ! ) ) ::::| | : ( ( | | |:::T::::.| ( ( ::| \: ) )ト--^^^^^┤ ) ) 丿 / ( ( ( .( \ / .、.) ) / \ _ \ INDY TIPS monazilla.org/document/indytips.html DelWiki - Indy onigiri.s3.xrea.com:8080/delphi/index.php?Indy Indy 日本語ヘルプ www.borland.co.jp/delphi/del7docup.html
- 271 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 20:02:39 ]
- >>179氏を参考にIndy9のインスコまでは完了した。
んで、IdUDPClientを使おうと思います。 送信についてはSendBufferでおkというのはわかったのだが、 受信をするにはReceiveBufferしか見当たらない・・・ やっぱりこれってスレッドで回さないとあかんのでしょうか? NMUDPみたくReceiveイベントがあれば楽なのに・・・orz
- 272 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 20:48:46 ]
- >>271
うん。でもスレッドコンポーネントとか使えば楽なんじゃない?
- 273 名前:271 mailto:sage [2005/06/22(水) 09:59:41 ]
- >>272情報dクス
スレッドコンポーネントっちゅーのは使ったことないんですが、 ttp://www.asahi-net.or.jp/~nk2w-ishr/progdtl.htm#KThdComp これのことですか? なんとなく使用方法はわかったと思います。 中身は普通のスレッドオブジェクトと同じっぽいですね。 で、もう一つ質問があるのですが、ひとまずスレッドではなくボタンイベントにて ReceiveBufferを呼び出すようなサンプルを作り、受信しようとしたのですが、 受信してくれない様子でした。 引数の設定で解決するんかなぁ?って思っております。 晒そうと思ったが現在手元にナッシングですので後ほど晒します。
- 274 名前:271 mailto:sage [2005/06/22(水) 18:41:20 ]
- 自己レス
なんとか動作できました。 IdUDPClientではなくIdUDPServerを使用したところ、 スレッドにしなくてもOnUDPReadイベントが実装されて いたので、私の理想通りなことが出来ました。 ちなみに>>273で出来ないと言っていたのは、Bindingsに ハンドルを指定しておりませんでした。 (その前はActiveがfalseのままで出来なかったり・・・もあった) 晒すとこんな感じ static char buff[MAX_DATA]; void __fastcall TReadingForm::IdUDPServer1UDPRead(TObject *Sender, TStream *AData, TIdSocketHandle *ABinding) { for(int i = 0; i < MAX_DATA; i++) buff[i] = '\0'; IdUDPServer1->ReceiveBuffer(buff, 8192, -1); 〜受信処理〜 } ご協力ありがとうございましたm(。_。;)m
- 275 名前:271 mailto:sage [2005/06/23(木) 13:29:24 ]
- 自分で修正
IdUDPServer1->ReceiveBuffer(buff, AData->Size, -1); ADataに受信バイト数が入っているから、こう書いたほうがヨサゲ
- 276 名前:271 [2005/06/23(木) 15:36:29 ]
- チョ→阿呆なことをしていることが発覚
static char buff[MAX_DATA]; void __fastcall TReadingForm::IdUDPServer1UDPRead(TObject *Sender, TStream *AData, TIdSocketHandle *ABinding) { for(int i = 0; i < MAX_DATA; i++) buff[i] = '\0'; AData->ReadBuffer(buff, AData->Size); 〜受信処理〜 } 元々IdUDPServer1UDPReadが受信コールバックで入ってきているのに 更にIdUDPServer1->ReceiveBuffer(buff, AData->Size, -1);って受信待ちに したらダメぢゃん_| ̄|○ 兎も角、これで本当に正常に動作しているっぽいのでご参考あれ
|

|