問題タブ [tclientsocket]

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.

0 投票する
3 に答える
4312 参照

delphi - Delphi TClientSocket は (まだ) 非推奨ですか?

バグ レポート12266 (「ソケット接続のエラーでリソース リークが発生する」)の解決コメントで、Robert Ehteshamzadeh は次のように書いています。

TClientSocket は非推奨です。このレポートは、提案された回避策を可能にするために開いたままになっています。

これは Delphi 6 用でした。それ以降のバージョンでは、TClientSocket と TServerSocket はデフォルトでツール パレットにインストールされませんでしたが、インストール手順が提供されました。

その後、このステータスは変更されたので、TClientSocket (および TServerSocket も) は再び Delphi VCL のファースト クラス メンバーになりましたか? 一部のプロジェクトで (Indy と Synapse に続く別の TCP/IP ライブラリとして) TClientSocket を使用したいと考えていますが、Embarcadero DocWikiで公式のステータス情報を見つけることができませんでした。

(「非推奨」のクラス/メソッドの公式インデックスが役立ちます)。

0 投票する
1 に答える
169 参照

delphi - ワークステーション間のソケットの問題

最近、異なるワークステーション間のソケットで問題が発生しました。Delphi TClientSocket を使用してサーバーに接続し、サーバーからデータを受信しました。そして、私のテストによると、TClientSocket が異なるワークステーションで受信したデータが不安定であることがわかりました。

サーバーは Windows XP (SP2) に常駐し、メッセージを 10000kbps でブロードキャストし続けます。サーバーからデータを受信する同じクライアント アプリを実行している別の 2 つの Windows XP (SP2) があります。しかし結果は大きく異なり、一方のクライアントは 10000kbps でデータを受信し続け、もう一方のクライアントは 300kbps しか受信しません。

Windows XP (SP2) ワークステーションをテストしているこれら 2 つのクライアント アプリの違いによって、この結果が生じる可能性はありますか? レジストリ値のようなものか、それとも?

助けてください、ありがとう。

0 投票する
2 に答える
3265 参照

c++ - TClientSocketとTServerSocketが非推奨になったのはなぜですか?代わりに何を使用する必要がありますか?

Eclipse、Emacs、Visual Studio、メモ帳の生活を送った後、Embarcadero RADStudio2010に慣れ始めたばかりです:)

TClientSocketとTServerSocketを多用していることがわかった非常に大きなC++アプリケーション(500.000〜1.000.000行)に飛び込んでいます。IDEは、TClientSocketが見つからなかったことについて最初に不満を述べましたが、それでもコンパイルできたので、頭をかきました。その後、デフォルトではインストールされておらず、以前から非推奨としてマークされていることがわかりました。

私はその主題について読み込もうとしましたが、多くの情報を見つけられませんでした。私の質問は

  • TClientSocketとTServerSocketが非推奨になるのはなぜですか?
  • WinSockおよびBSDソケットとの機能の違いは何ですか?
  • 代わりに何を使用するのが最善であり、アプリケーション全体を調べて、TClientSocketとTServerSocketが使用されているすべての場所を変更する必要のない迅速な交換はありますか?変わったのは主に内部の仕組みだと思いますか?
0 投票する
1 に答える
720 参照

php - Apache Thrift API と通信するための PHP クライアント

私はPHP開発者で、Apache Thrift APIを使用して別のサーバーと通信するサイトで作業しているため、PHPでThrift APIと通信するために使用できる既存のクラスまたは方法があることを知りたい. Tsocket を使った Python で書かれたサンプルを見たことがありますが、PHP に Tsocket クラスがあるかどうかはわかりません。したがって、誰かがそのような作業を行った場合は、サンプルを投稿するか、PHP でthrift API クライアントを実装するために使用できるクラスについて教えてください。

みんなの努力に前もって感謝します。

0 投票する
3 に答える
4320 参照

delphi - Delphi — TClientSocket ReceiveText MaxLen?

TClientSocket関数から回復する文字数の長さを設定しようとしましたがReceiveText、何も機能していないようです。たとえば、復元されたデータまたはその他のデータストリームから最初の左端の文字を受信します。この特定のオブジェクトを使用してDelphiでこれを実現する方法はありますか?

助けていただければ幸いです。前もって感謝します。

0 投票する
2 に答える
4124 参照

delphi - Delphiソケットエラー

DelphiでのServerSocket使用方法を理解しようとしています。ClientSocket簡単なチャットプログラムを作成しましたが、クライアントが最初のメッセージを送信した後、このエラーが発生します(送信中に発生します-サーバーがメッセージを取得した直後)

ここにサーバーコード

これがクライアントコードです

0 投票する
1 に答える
803 参照

c++ - 非ブロッキングモードでTThread内でTClientSocketを使用すると、OnConnectイベントが発生しません

TClientSocketマルチスレッドC++Windowsアプリケーション内で非ブロッキングモードでBorlandsコンポーネントを利用しようとしています。複数のスレッド(から派生したクラスTThread)を作成しており、それぞれが独自のTClientSocketオブジェクトを作成しています。次に、スレッドクラスのメンバー関数を割り当てて、ソケットのOnConnectOnDisconnectおよびイベントのイベントハンドラーとして機能させます。OnSocketErrorここで私が抱えている問題は、TClientSocket::Open()関数内から関数を呼び出すたびにTThread::Execute()OnConnectイベントが発生しないことです。ただし、関数が呼び出されるOpen()前にVCLスレッドから関数を呼び出すTThread::Execute()と、すべてのイベントが発生し、スレッドとソケットの組み合わせを自由に使用できます。今、私はそれを言うドキュメントで何も読んでいませんTClientSocketスレッド内で使用する場合、非ブロッキングモードで使用するべきではありませんが、このクラスを使用しようとしている方法に概念的に何か問題があるように思われます。Borlandのドキュメントはこの件に関して非常に貧弱であり、これらのコンポーネントは現在非推奨になっているため、信頼できる情報を入手するのは困難です。非推奨になっていますが、私が持っているBuilder 6パッケージには代替手段がないため、これらを使用する必要があります。TThread正しい/間違った使用方法とノンブロッキングTClientSocketの組み合わせがあるかどうか誰かに教えてもらえますか?VCLスレッドの一部として使用する際に問題が発生したことはなく、TServerSocketを使用する際に問題が発生したこともありません。また、一部のイベントが発生しない理由を本当に理解できません。

0 投票する
1 に答える
558 参照

c++ - 複数の TClientSocket インスタンスを使用して Windows ハンドル リークを引き起こす C++ アプリケーション

Borland/EmbarcaderoTClientSocketコンポーネントを使用して、明らかなハンドル リークが発生しました。TThread複数のインスタンスを作成するアプリケーションがあり、それぞれがTClientSocketオブジェクトを動的に作成し、ターゲットに接続していくつかのメッセージを送信してから削除します。その後TThread、インスタンスは ( のFreeOnTerminate = true設定を使用して) 削除されます。これが非効率的であることはわかっていますが、アプリケーションのニーズに完全に適合していますTThread。同時に存在できるインスタンスの最大数は 32 に制限されています。タスクマネージャー経由。問題を切り分けるために、同じ問題をシングル スレッドの意味で適用し、動的にTClientSocketメイン VCL スレッドの 1 つのループ内で終了すると、オブジェクトが再び削除されます。これは、同じハンドル漏れの問題を示します。コンポーネントが非推奨であることはわかっていますし、自分が行っていることが非効率的であることもわかっていますが、ハンドル リークが発生する理由がわかりません。TClientSocketこのハンドル リークをなくすためにオブジェクトを削除する前に、何かする必要があることはありますか?それとも、これはコンポーネントのバグですか? OnConnect OnDisconnect非ブロッキング モードでソケットを使用し、イベント ハンドラをおよびに割り当てていますOnSocketError

0 投票する
1 に答える
927 参照

c++ - ブロック モードで TServerSocket を使用する場合、どのように例外を処理しますか?

Embarcadero RAD スタジオとTServerSocketコンポーネントをブロッキング モードで使用して C++ アプリケーションを作成しています。ソケットのハンドラーをオーバーライドして、デフォルトメソッドをオーバーライドOnGetThreadする派生元のカスタム クラスを作成しました。この関数内で、 を使用して 、 、およびを呼び出し、データを送受信します。私が読んだすべてのことによると、これは物事を進めるための許容できる方法です (ただし、これが間違っている場合は修正してください)。TServerClientThreadClientExecute()TWinSocketStreamWaitForData()Read()Write()

この回答からブロッキングソケットに対してどのイベントが発生しますか? OnClientErrorイベントが発生するため、ブロッキング モードでハンドラーを使用しても問題ないと考えるようになりました。私のイベント ハンドラでは、エラー コードを毎回 0 に設定して、例外がスローされないようにしています。

さらに、関数を呼び出すたびに、Read()または関数Write()内からClientExecute()try-catch ブロックでラップし、ESocketError例外をキャッチします。

私の質問はこれです:これは最良のアプローチです:

  1. ソケット エラー イベント ハンドラーを使用してすべてを処理します (デバッグ目的でソケット エラー コードを表示できるため、これは便利です)。
  2. アプリケーションが例外をスローしないように try-catch ステートメントを使用する
  3. 両方を使用します (ただし、ハンドラーでエラー コードをゼロに設定しないと、例外がスローされず、上記の 2. が無意味になります)。

これは古いコンポーネントであり、廃止されましたが、これを使用する必要がありますが、正しく使用するための鋳鉄ガイドを見つけることができなかったため、多くの情報源からのアプローチをまとめました. かなり長い間うまく機能していますが、サーバーがそれ以上のクライアント接続を受け入れることを妨げるサイレントエラーが時々発生しますが、出力もスローもOnClientErrorありません。ESocketErrorsこのアプリケーションは組み込みデバイスで実行されているため、応答しなくなった場合にのみ検出されます。

上記の 3 つのアプローチのどれが最適か (または別の方法を提案するか) について誰かがアドバイスをくれたら、とても感謝しています。

0 投票する
1 に答える
1223 参照

android - サーバーからクライアントへ、およびクライアントからサーバーへ画像を送信する

クライアントはファイルをサーバーに送信し、サーバーはそれを受信して​​保存します。しかし、クライアントでその Line(while ((len = outputFromServer.read(buf)) != -1)) がクライアントにスタックすると、理由がわかりませんか? 試す {

サーバ側

クライアントはファイルをサーバーに送信し、サーバーはそれを受信して​​保存します。しかし、クライアントでその Line(while ((len = outputFromServer.read(buf)) != -1)) がクライアントにスタックすると、理由がわかりませんか?