投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/9/26 00:08:08
> Dim Target_IP As IPAddress = IPAddress.Parse("133.113.0.42")
…東芝?


> Binary Writerを使うプログラムを試したのですが
BinaryWriter はストリームに書き込みを行うためのクラスです。
しかし今回はそのストリームがありません。
先の回答でも、「GetSream を解さずに」と書いていますよね。
(とはいえご存知のようにそもそも GetSream というメンバーは無いのですが)


> Dim stream As New NetworkStream(MyUdpClient.Client, True) の部分で  
私が NetworkStream を例示したのは、TCP の方だったハズ。
先の発言は『Client プロパティから基の Socket を取り出して使用する』案を提示したものです。
(ちなみに UdpClient.Send は、内部的には .Client.Send/SendTo 相当の処理を行っています)

UDP はそもそもストリーム指向のプロトコルでは無いでしょうし、先の回答も
TCPClient を真似てストリームとして扱うことを提案したわけではありません。
TCP であれ UDP であれ、元になっているのは Socket クラスであることを
紹介したかっただけなのですが…誤解させてしまったようですね。


> "ストリームに方向づけられていないソケットでは実行できない操作です。"
NetworkStream として開くためには、Socket クラスの SocketType プロパティが
Stream でなければなりません(かつブロッキングモードであること)。しかしながら、
TcpClient の方のソケットがストリーム(SocketType.Stream)であるのに対し、
UcpClient の方のソケットはデータグラム(SocketType.Dgram)となっています。

※ UDP = ユーザー データグラム プロトコル