ソケットからネットワークストリームを読み取ろうとしています。ソケットのAddressファミリはInterNetwork、ソケットタイプはStream、プロトコルタイプはIPです。ソケットからネットワークストリームを読み取る
私は、IPアドレスと私が読もうとしているポートからなるIPEndPointを持っています。
NetworkStream myNetworkStream;
Socket socket;
IPEndPoint maxPort = new IPEndPoint(IPAddress.Parse("x.x.x.x"), xxxx);
socket =
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
socket.Connect(maxPort);
myNetworkStream = new NetworkStream(socket);
while (myNetworkStream.DataAvailable == false)
{
Thread.Sleep(1);
}
byte[] buffer = new byte[1024];
int offset = 0;
int count = 1024;
myNetworkStream.Read(buffer, offset, count);
Console.ReadLine();
私はデータが利用可能であることを知っている(私は、既存のアプリケーションの私の独自のバージョンを書いていますし、参照としてソースコードを使用しています)が、真/偽のデータ利用可能のプロパティは常にfalseのままで、私は私を打つことはありませんConsole.Readline()。
私はここで間違っていますか?
ここにドキュメントがあります:http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.dataavailable.aspxはdo ... whileループを使用します。コードの構造は、DataAvailableプロパティをチェックする前にRead()を試す必要があることを示しています。私は100%確信していませんが、それは明示されていません。最終的なRead()の結果を調べて、返されたデータがあるかどうかを調べるのが好きです。もちろん、私は基本から離れているかもしれません。私はこの問題を経験したことがないので、これは推測です(これはコメントであり、答えではありません) – David
ありがとう、それは読んでいますが、それ以上は行っていませんが、私はこれについて私の頭を浮かべることが本当に大好きなので、ドキュメントに掘り下げていきます。それはいくつかの素晴らしい開発者が以下の答えを掲示しない限りです! – JMK