問題タブ [networkstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - NetworkStream Read は死ぬまでどのくらい待機しますか?
内部で使用するRead
on NetworkStream
objeckへの呼び出しがあります。Socket.Receive
データが入ってこないとしましょう。Read メソッドが終了するまでの時間は?
ReceiveTimeout
0 (無限タイムアウト) に設定されます。
インターネットケーブルを抜いたら?それは終了しますか?
c# - .NET NetworkStream が閉じられました。すべてのデータが読み取られたことを確認するにはどうすればよいですか?
TCP 接続を開いて、NetworkStream.BeginRead() を使用して読み取ります。いずれかの端で接続が閉じられると、コールバックが呼び出され、ストリーム オブジェクトは役に立たなくなります。ドキュメントにあるように、EndRead() は、この場合、接続を終了した端に応じて IOException または ObjectDisposedException をスローします。
最後に成功した EndRead (および再 BegingRead) と切断の間、特に最後にそれを行った場合、欠落しているデータがないことが保証されていますか? そうでない場合、接続を閉じている場合は、未読のものがないように切断するときに NetworkStream.Read() を手動で行う必要がありますか?
c# - BufferedStream.Writeが「このストリームはシーク操作をサポートしていません」とスローするのはなぜですか?
これは私を困惑させます。呼び出していないのにシークについてエラーが発生しますか?
私は次のようなコードを持っています:
そして私はこの例外を受け取ります:
ストリームはタイプSystem.IO.BufferedStream
です。何が起こっている可能性がありますか?
詳細情報で編集:
sizeof(uint)==msg.length
この場合。
ストリームは次のように宣言されますstream = new BufferedStream(new NetworkStream(socket), 1024)
編集:
それでした!1つので読み取りと書き込みを行うことができますがNetworkStream
、に切り替えるときBufferedStream
は、読み取りと書き込み用に別のを用意する必要があります。どうやらNetworkStream
、同じソケットでコンストラクターを2回呼び出すだけで、それを取得できるようです。
可能であれば、ジャスティンとハンスの両方の回答を受け入れます。一方が私に何が悪かったのかを正確に理解させ、もう一方が私を解決策に導いたからです。みんな、ありがとう!
c# - SendBufferSize より大きいファイルを TcpClient 経由で送信できますか?
.NET で Tcp 接続を試していますが、TcpClient オブジェクトの SendBufferSize よりも大きなデータを送信したいと考えています。ネットワークストリームに書き込むだけでデータを送信することは可能ですか、それとも写真を切り取って送信し、もう一方の端で再度作成する必要がありますか?
c# - SendBufferSize より大きいデータを送信した場合、データはどのように受信されますか?
SendBufferSize よりも大きなデータを送信する方法について質問したところ、いくつかの部分に分けて送信されるという回答がありました。
2 番目の質問は、このデータをどのように受け取るかということです。ネットワークストリームで完結するのか、それとも分割してしまうのか。
.net - JSON.Net を使用して NetworkStream から JSON を逆シリアル化または解析する
NetWorkStream を介してシリアル化されたオブジェクトを別のコンピューターに送信しています。受信側で、これらのオブジェクトを逆シリアル化したいと考えています。
NetworkStream を介してデータを受信しているときに、多くの連続したオブジェクトを送信します。JSON.NET が受信した文字列からドキュメントを解析するために、最初の JSON ドキュメントがいつ終了したかを知るにはどうすればよいですか?
または、さらに良いことに、Json.NET が NetworkStream から直接読み取り、結果の JSON ドキュメントを逆シリアル化/解析する方法はありますか?
教えてくださいよろしく
アルバート
.net - Json.net を使用して .net オブジェクトを NetworkStream に直接シリアル化する
Json.net を NetworkStream に直接オブジェクトをシリアル化する方法はありますか?
つまり、Json.net がオブジェクトをシリアライズするときに (ストリーミング方式で)、シリアライズされた結果をネットワークに送信します。
オブジェクトをメモリにシリアル化してから NetworkStream 経由で送信する必要はありません。
何かご意見は?
よろしく
c# - 巨大な文字列を NetworkStream に書き込む方法は?
インターネットから、NetworkStream から巨大な文字列を読み取る方法を手に入れました。
ただし、巨大な文字列を NetworkStream に書き込む方法の例が見つかりません。
読むのと同じように、書くのに「対称的な」パターンはありますか?
前もって感謝します。
asynchronous - BeginReceive / BeginRead タイムアウト
私は NetworkStream と TcpClient を使用して、BeginRead を使用してデータを非同期に受信しています。指定した時間が経過すると読み取りが中止されるように、この操作にタイムアウトを適用する必要があります。
私が知る限り、これは NetworkStream または TcpClient ではサポートされていません - ReceiveTimeout プロパティがありますが、これは同期に相当する「読み取り」にのみ適用されるようです。
基になる Socket クラスでさえ、その BeginReceive メソッドでタイムアウトをサポートしていないようです。
この問題について検索したところ、タイムアウト期間内に操作が完了しない場合に操作をキャンセルする別のバックグラウンド スレッドをセットアップするという唯一の解決策が提案されました。これは恐ろしいハックのようです。きっともっと良い方法がありますか?
c# - NetworkStream を使用した IRC - バッファがいっぱいになり、行が途切れる
問題は、short.MaxValue と同じ大きさのバッファーを使用しても、実際にはバッファーをいっぱいにすることができることです。作成した文字列をバッファから分割すると、最後の文字列が切り捨てられ、残りの文字列が次の読み取りに付属します。
1 行 (RFC2812 によると 512 文字) に十分な大きさのバッファーを作成し、最初の "\r\n" まで部分文字列を抽出してから、残りのデータを配列の先頭にコピーすることを考えていました。バッファーを使用し、offset パラメーターを使用して、最後の反復で抽出されなかったデータの末尾にさらにデータを読み取ります。フォローしづらかったらすいません…
それが最善の解決策ですか、それともここで明らかなことを見逃していますか?