問題タブ [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.
vb.net - 必要な NetworkStream.Read 動作の説明
次のようにブロッキング読み取りを使用して、ネットワーク ストリームからリアルタイム データを消費しています。
Wireshark でネットワーク上にパケットが着信するのを観察すると、新しいパケットが着信すると、.NET がすぐにそれを認識してブロックを解除し、処理できるようになることがあります。それ以外の場合は、NetworkStream.Read がブロックを解除して一度にすべてを返す前に、複数のパケットが送信されてきます。
これは予想される動作ですか?ネットワーク経由で受信した各パケットをすぐに取得して処理する方法はありますか? 非同期受信モデルはここで違いを生むでしょうか? それとも、TCP ストリームの仕組みを根本的に誤解しているだけなのでしょうか?
c# - gprs 接続からのデータ受信の遅延
C#でパーサーを書いています。でパケットを送受信しmax length = 100
ます。ただし、各パケットの後の (受信と送信の間の) 時間は 2 秒以上です。それが私の実装の問題なのか、gprs側の問題なのかわかりません。
サーバーのリッスン:
データの受信を開始します:
これは単純な実装です。最初のデータ パケットの bytesRead を受信した瞬間は、2 番目のデータ パケットと比較して約 2 秒です。遅すぎると思います。受信時間を増やすにはどうすればよいですか?データを受信して返信した後、すでに確認しましたが、1ミリ秒しかかかりませんでした。
送信部分の追加:
c# - 非同期読み取り中のTcpClientの切断
TCP接続の終了についていくつか質問があります。
クライアントはTcpを使用してサーバーに接続し、でクライアントを受け入れた後、で
listener.BeginAcceptTcpClient(ConnectionEstabilishedCallback, null);
読み取りを開始しますnetworkStream.BeginRead(....)
。
メッセージを待っている間にクライアントが切断するとどうなりますか?(たとえば、電源やインターネットなどが失われます)
いつ発生したかを知るにはどうすればよいですか?読み取りが成功した後、私はいくつかのことをしてから、
networkStream.Close(); client.Close();
「クライアントには何が表示されますか?」接続を「正常に」終了するにはどうすればよいですか?(BeginReadを使用して)読み取りを待ってから(別のスレッドで)同じストリームを閉じるとどうなりますか?
編集して追加:クライアントとサーバーの間でピンポンメッセージが表示されます。それで十分?pingを受信しない場合は、NetworkStreamを終了しますか?確かにもっと良いものがあるに違いありません。
c# - C# - TcpClient - ストリームの終わりを検出していますか?
古いネットワーク カメラを自分のコンピュータに接続しようとしていますが、非常に基本的な問題で立ち往生しています。つまり、ストリームの終わりを検出することです。
カメラと通信するために を使用TcpClient
していますが、実際にカメラがコマンド データを送信しているのを見ることができます。ここでは問題ありません。
ただし、応答を読み返すと、問題が始まります。最初は、次のコードのような単純なものが機能すると考えていました。
しかし、そうではなかったので、今回は ReadByte() を利用して別のバージョンを試してみました。説明には次のように記載されています。
ストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト進めるか、ストリームの末尾にある場合は -1 を返します。
だから私は次の行に沿って何かを実装できると思った:
いいえ、まだ機能しません。データが入ってくるのを実際に見ることができます (常に同じであるとは限りません。それ以外の場合は、毎回その数のバイトを単純に読み取ることができます) 0
。残りの要素の値として取得を開始し、停止しません。手動で実行を停止するまで。外観は次のとおりです。
だから私の質問は、ここで何か基本的なことが欠けていますか? ストリームの終わりを検出するにはどうすればよいですか?
どうもありがとう、
H.
c# - NetworkStream.Write と Socket.Send
カスタム FTP ライブラリを使用する ac# アプリケーションがあります。現在、Socket.Send を使用してデータを送信していますが、ソケットで NetworkStream を開始し、代わりに NetworkStream.Write を使用する方がよいかどうか疑問に思っていました。
一方を他方よりも使用する利点はありますか?
c# - ParameterInstance.lockObjectによるスレッドロック、それは機能しますか?
私はずっとグーグルで検索しましたが、これに対する答えは見つかりませんでした。私は自分で簡単にできるように自分の小さなTcpライブラリをプログラミングしています。サーバーには、ソケットとネットワークストリームを持つ「ConnectedClient」オブジェクトがあります。サーバーの静的クラスには、長さのプレフィックスが付いたストリームを送信するSend関数があります。ストリームをスレッドセーフにしたいのですが、クライアントごとに。これはそのために機能しますか?
私は自分自身を十分に明確にしたことを願っていますが、そうでない場合は、詳細を尋ねてください。
java - Java でネットワーク ストリーム データを読み取る方法 (プロトコル パケット)
特定の gps デバイスが通信に使用するプロトコルのデコードに取り組んでいます。現在、送信する最初のデータ パケットを分析しています。読むことはできますが、正しく読んでいないと思います。
これが私がこれまでに得たものです:
出力:
-INITSESSION-- ポート :1954 でリッスン中
合計パケット サイズ: 17
ACK パケット : 000F
データパケット: 333532383438303236323631393534
完全なパケット: 000F333532383438303236323631393534
------閉会式------------
今、私の問題:
ここで起こっていることは、デバイスが [0x00][0x0F]xxxxxxxxxxxxxxx を送信することです。xxxxxxxx はその imi (データ パケット) です。私の問題は、データ パケットに 3 が多すぎるため、実際の有効な出力は次のようになることです。
352848026261954
これは、3 を削除することによって得られます。私の質問は、この動作は私のコードまたはプロトコルの一部に由来するのでしょうか? 私はこれをプログラムで修正できますが、コードがこれらの余分な 3 を引き起こす方法があることを知りたいです。
c - MAC アドレスのみを使用して 2 つのシステム間で通信する
C プログラムを使用して (IP アドレスを使用せずに) MAC アドレスのみを使用して 2 つのシステム間で通信する方法を知りたいです。これは生のイーサネット通信だと思います。私の要件は、MAC アドレスのみを使用してクライアントからサーバーにデータを送信することです。これは、独自の raw イーサネット フレームを作成することで実行できる可能性があります。
これに関して私を助けてください。誰かが C でコードを書いている場合は、共有してください。
このリンクが役立つかもしれません: http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html
c# - 最初の読み取り後に XmlReader がハングする
TcpClient を介して xml ストリームを読み込もうとしています:
としてストリームを作成した後
私は読み続けます:
これは、最初のストリームではうまく機能します。データは正常に表示されますが、次のエラーでハングしますwhile(r.Read)
:
ネイティブ フレームが呼び出し履歴の上にあるため、式を評価できません
助言がありますか?