問題タブ [tcpclient]
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# - プログラムでtelnet接続の遅延に対処するには?
TcpClient クラスを利用して telnet 接続を実装します。私が知らないのは、応答の終わりを決定する方法です。DataAvailable プロパティが true になると、Stream からデータを読み取り、DataAvailable が一時的に false に設定され、バッファが別のデータのチャンクで満たされているようですが、すべて読み取られて消えると思います。すべての応答が読まれたことを確認するにはどうすればよいですか?
以下のコード スニペットを変更して、これを正しく機能させる方法を教えてください。応答全体を取得するのに十分な時間があるため、コードをステップ実行すると正しく動作します。あなたの助けに感謝。
c# - C#プログラムを終了する準備ができたら、tcpClient.Connect()プロセスを停止するにはどうすればよいですか?そこに10秒ほど座っているだけです!
これは私の最初の問題の1つです。プログラムを終了するたびに、tcpClient.Connect()を閉じるのに永遠に時間がかかります。私はたくさんのことを試しましたが、どれもうまくいかないようです。
CreateConnection()スレッドを見てください。クライアントがまだ接続されていない場合は、プログラムを閉じます。閉じるのに永遠に時間がかかります。接続されている場合は、すぐに閉じます。これはある種のタイムアウトトリックで実行できることは知っていますが、いくつか試しましたが、どれも機能しませんでした。
可能であれば、コード例を提供してください。
また、masterServer.writeLine()とmasterServer.readline()を実行するこのバージョンの代わりに、バッファーを使用して実際のバイトを読み書きするC#の優れたチュートリアルはありますか、それともどちらも同じくらい効率的ですか?
私がこれを改善するのを助ける何か他のものを見つけたら...どうしても、先に進んでください。私はこれを行う方法を自分自身に教えようとしています、そして私は助けがないので、あなたがそれを見たら私に間違ったことをさせないでください!!! みんなありがとう!
c# - streamreader がデータ待ちでハングアップしないようにする
以下のコードは、tcp クライアント ストリームから読み取る必要があるすべてのものを読み取り、次の反復では Read() にそのまま残ります (データを待っていると仮定しています)。読み取るものが何もないときに返されないようにするにはどうすればよいですか? タイムアウトを低く設定し、失敗したときに例外に応答する必要がありますか? それとももっと良い方法がありますか?
sockets - TCP ソケットプログラミングでカーネルに範囲 (1024,5000) のポート番号を選択させる方法
次のコードを実行すると:
ソケットによると、1024 から 5000 の間のポート番号を取得する必要がありますが、約 30,000 のポート番号を取得しています。
私は何をすべきか?
vb.net - VB.NET で ASCII 文字列の長さ (文字数) を取得するにはどうすればよいですか?
このコードを使用して tcpclient から文字列を返していますが、文字列が戻ってきたときに先頭の"
文字が含まれています。削除しようとしていますが、Len()
関数は文字列自体ではなくバイト数を読み取っています。これを変更して、文字列自体の基になる配列ではなく、通常使用する文字列の長さを取得するにはどうすればよいですか?
Len()
文字列の文字数ではなく、バイト数を報告します。
c# - C# でサーバーに接続できない問題
クライアント/サーバー アプリケーションを実行しています。テキスト ボックスを使用して、ユーザーが IP アドレスとポートを入力できるようにします。127.0.0.1 を使用してサーバーに接続しようとしましたが、問題はありません。その後、192.168.2.102 (このコンピュータの NAT IP アドレス) を使用しようとしましたが、失敗しました。理由はありますか?
私が使用しているコードは次のとおりです:(これは接続する部分です)
デバッグで確認しましたが、正しい IP アドレスとポートを使用しています。ファイアウォールは、接続を許可する必要があります。それは奇妙だ。
編集: 私は問題を知っていると思います。サーバー側では、使用します
そして、それが 127.0.0.1 からの接続のみを受け入れる理由だと思います。しかし、代わりに何を使用すればよいですか?このポートを使用して、任意の IP から任意の接続が必要です。
c# - TcpClient データが利用可能になるのを待つ最善の方法は?
これを行うより良い方法はありますか?
c# - BeginAcceptTcpClientを呼び出した後にTcpListenerを停止する
私はこのコードを持っています...
次に、私のコールバック関数は次のようになります...
ここで、BeginAcceptTcpClientを呼び出し、しばらくしてからサーバーを停止します。これを行うために、私はTcpListener.Stop()またはTcpListener.Server.Close()を呼び出しています。ただし、これらは両方とも私のAcceptClient関数を実行します。EndAcceptTcpClientを呼び出すと、これにより例外がスローされます。これを回避するためのベストプラクティスの方法は何ですか?stopを呼び出したら、AcceptClientの実行を停止するフラグを設定することもできますが、何かが足りないのではないかと思います。
アップデート1
現在、コードを次のように変更してパッチを適用しています。
アップデート2
SpencerRuportからの回答を暗示するように変更しました。
c# - Read()ブロッキングの問題
私はC#でサーバーアプリケーションを開発しています。クライアントはサーバーに接続してさまざまな要求を行うことができます。現在、クライアントが接続すると、リクエストを処理するために新しいスレッドが生成されます。TCPClientクラスを使用してクライアント接続を処理しています。私のサーバーは次のように機能します。
- クライアントはリクエストでサーバーに接続します
- サーバーはリクエストを処理します
- サーバーは、クライアントにこれ以上の要求があるかどうかを確認するために待機します
- クライアントがタイムアウト期間内に別の要求を行わない場合、サーバーは接続を強制終了します
私の問題は次のとおりです。
TCPClientクラスから取得したNetworkStreamオブジェクトから読み取る場合、使用可能なデータがない場合、NetworkStream Read()メソッドはブロックされません。サーバーがステップ#3に達したときに、NetworkStreamにタイムアウトを設定したいと思います。クライアントがその期間内にそれ以上リクエストを行わない場合、サーバーはそのタイムアウト例外がスローされたときに接続を強制終了する必要があります。サーバーがステップ3に到達すると、ReadTimeoutプロパティを何に設定したかに関係なく、NetworkStream Read()メソッドはブロックされません。誰かが私を助けてくれますか、または私がやろうとしていることをするためのより良い方法を提案できますか?
ありがとう
java - Java:接続は拒否されましたが、netstatは別の言い方をします
JavaのTCPソケット、つまりSocketとServerSocketを使用して、サーバーとクライアントの両方として機能するノードがいくつかあります。各ノードは永続的な接続を使用して、4〜10個のネイバーと通信します。ただし、ノード(node1)が別のノード(node2)に接続しようとすると、次の例外がスローされる場合があります。
java.net.ConnectException:接続が拒否されました
node2でnetstatを実行すると、適切なポート(この場合は61685)でnode1とのTCP接続が確立されていることが示されます。
tcp 0 0(ノード2):61685(ノード1):55150確立済み
ただし、node1は、接続を試みるたびに同じ例外をスローします。
ServerSocketは次のように作成されます。
}
送信部分は次のようになります。
奇妙なことに、これらのノードは通常、すべての着信接続を拒否しません。これは、10個のネイバーのうち、6個が実際に接続できる可能性があるのに対し、4個は拒否されるためです。私が試したすべてのノードでファイアウォールが実行されているとは思えません。サービスがポートで実行されていることは間違いありません。この例外がスローされる他の理由はありますか?ありがとう!