フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: System.Net.Socket
3ma
メンバー
投稿数: 11
System.Net.Socket
on: 2019/04/26 15:24 Fri

お世話になります。3maです。

まだ、QCに入れた訳では無いのですが、、、(自信が無いので)

System.Net.SocketのTSocketを使ってUDPなどやってみようと思って躓いています。

var
sync: IASyncResult;

constructorで
sock := TSocket.Create( TSocketType.UDP );
sock.Bind( TNetEndPoint.Create( TIPAddress.Any, 3333 ) );
sync := sock.BeginReceiveFrom( SocketRecv );

と、受信を途中で止めたければ
sync.Cancel;
とすれば、いいのかと思ったのですが、うまくいかず。

ソースを追いかけたのですが、
BeginReceiveFromで返されるTSocketReceiveFromAsyncResultは
TBaseAsyncResultから派生していて、
TBaseASyncResult.Cancel
内で、DoCancelを呼んでいます。
TBaseASyncResult.DoCancelは常にFalseを返します。
規定ではCancelは出来ない仕様です。

TSocketReceiveFromAsyncResultも、その親のTSocketAsyncResultも
DoCancelをoverrideしていないので、当然Cancel出来ません。

これはQCに報告する類の問題でしょうか?
それとも、私の勘違いでしょうか?

よろしくお願いいたします。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.023 sec.