問題タブ [indy]

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 投票する
5 に答える
841 参照

delphi - Indyを使用した堅牢な単方向メッセージ

オプションのサーバーアプリケーションに通知メッセージを送信する必要があるクライアントアプリケーションがあります。クライアントは、サーバーアプリケーションが存在するかどうかに影響されないようにする必要があります。サーバーアプリケーションへの接続を試みて通知メッセージを送信し、エラーが発生した場合は、すべてのエラーを黙って無視して作業を続行する必要があります。

TCP通信にIndyを使用していますが、エラーメッセージが表示されないようにするためのすべての試み(つまり、クライアントに接続しているときにサーバーアプリケーションが閉じたとき)が失敗しました。

これを本当に堅牢にする方法はありますか?

現在のコードは次のようになります。

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

delphi - Indy Sockets 9 IdTcpServer ServerExecute で AccessViolation が発生するのはなぜですか?

最初の質問:

次のルーチンは、Indy 9 IdTcpServer.OnExecute ルーチンの正しい実装ですか?

2番目の(実際にはもっと重要な)質問:

現在、アクセス違反 (アドレス 000000 からの読み取り) が時々発生しています。明らかに行で:

ただし、AContext / Connection / InputBuffer / IOHandler = nil BEFORE が false かどうかを確認します。呼び出しの後 (および例外が発生した後)、IOHandler は nil です。

RAD Studio / Delphi 2007 を使用しています。

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

delphi - TidTCPServer アップグレードの問題

最近、古い Delphi 6 プロジェクトを Delphi 2007 にアップグレードする必要がありました。これは、Indy TidTCPServer コンポーネントを使用するサーバー アプリケーションです。Indy 10 へのアップグレードで見つけたすべての例に従いました。

アプリケーションは、TCP/IP を介して古い VB6 アプリケーション (コードがない) とインターフェイスします。VB6 アプリケーションが接続するとすぐに Indy コンポーネントの Execute イベントが発生するため、苦労していますが、データは書き込まれません。これにより、アプリケーションは、決して到着しないデータを送信するのを待機してハングします。

元のコードは次のようになります。

p>

私は Indy の例からいくつかのコード例を試しました。例は次のとおりです。

p>

不思議なことに、元のコードを .NET クライアントで実行すると、問題なく動作します。これは、VB6 アプリケーションに起因する問題のようです。

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

web-services - Delphi SOAP Web サービス クライアントで NTLM 認証を使用するにはどうすればよいですか?

Microsoft CRM プロジェクトの場合、Delphi 2009 Web サービス クライアントでNTLM 認証が必要です。

Indy 10 Tiburon は既に実験的な NTLM サポートを行っているようです。

THTTPRio コンポーネントの NTLM 認証を有効にして、宛先 Web サービス サーバーのログオン情報 (ユーザー名、パスワード、ドメイン) を使用するにはどうすればよいですか?

編集: HTTP ダイジェスト アクセス認証など、「基本」以外の認証方法を使用する方法がある場合も役立ちます。

0 投票する
4 に答える
40318 参照

delphi - Delphi + Indy:接続が正常に閉じられました

D7 +Indy10の最新ビルドを使用します。

私のコードはTIdSMTPを使用してメールを送信しています。一部のエンドユーザーで「接続が正常に閉じられました」と表示され続け、メールが送信されません。

コードは次のようなものです。

何かアドバイス?

0 投票する
5 に答える
2585 参照

delphi - {APPTYPE CONSOLE}ディレクティブが追加され、アプリケーションの実行が非常に遅くなりました。マウスを動かすと、実行速度が速くなります

WindowsフォームのGUIを使用するだけでなく、コマンドラインから呼び出すことができるようにサードパーティのアプリケーションを拡張しようとしています(混合モードが望ましい)。これは、基本的にファイルをロードし、ボタンをクリックしてUDPネットワークパケットの送信を開始する非常に単純なプログラムです。

別のアプリケーションからアプリケーションを呼び出す必要があり、引数を渡したいので、ExitCodeを呼び出し元のアプリに返すことができる必要があります。私が読んだことから、そうするためには、コンパイラ指令{APPTYPECONSOLE}を追加する必要があります。

私はこれを行い、ネットワークパケットの送信速度が低下してクロールすることを除いて、アプリケーションは希望どおりに機能しました。 フォーム上でマウスを動かすたびに気づきました。ネットワーク転送速度が大幅に増加したこと。ある種のWindowsメッセージキューの問題があり、マウスを動かすと割り込みが発生し、メッセージキューが処理されるのではないかと思います。

私はグーグルで検索し、1ms間隔のタイマーでApplication.ProcessMessagesとPeekMessagesを呼び出してみましたが、まったく役に立ちませんでした。他のアプリケーションのこのユーザーマニュアルで、Indy10はAPPTYPECONSOLEタイプとGUIタイプの両方でサポートされていると書かれていることがわかりました。率直に言って、すべてのネットワークライブラリが両方のモードで動作すると想定していたので、これは私を混乱させます...しかし、私が言ったように、私はDelphiに精通していません。

この問題は私のアプリケーションでは1行に限定されており、それは{APPTYPECONSOLE}が含まれているかどうかに関係していると確信しています。

誰かアイデアはありますか?

バージョン情報:
Delphi 7 Personal(ビルド4.453)
Indy 9.0.4

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

graphics - スクリーン キャプチャ (Bitblt) をメモリ バッファーに保存し、IdTCPClient 経由で送信します

Windows Vista の C++ ビルダー 6 では ...

現在、画面をキャプチャし、画面キャプチャを空のフォームに表示するためのコードのセクションがあります。私がやりたいのは、キャプチャした画像をメモリ バッファに保存し、インディ クライアント IdTCPClient を使用してこのバッファをインターネット経由で送信し、インディ サーバー IDTCPServer を使用して同様のプログラムで受信することです。

これを達成する方法の提案/アイデアはありますか?? 私はグラフィックスプログラミングにかなり慣れていません

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

delphi - WSAASyncSelectは十分に良いですか?代替案を提案できますか?インディの方がいいですか?

私はwinsockプログラミングのコンポーネントが好きではなかったので、自然な方法で好きでしたが、今日、同僚からプロジェクトにIndyを使用するように言われました。Indyが私のプロジェクトに適しているかどうか教えてください。-2つのTCPサーバー、2つのTCPクライアント。合計4つのソケット-プロジェクトはプロキシです。

そして今、2番目の質問ですが、WSAASyncSelectは良くなく、予測可能であると毎日読んでいます。これはwinsock 1.1からのものです。私の質問は、AsyncSelectよりも優れたものを手作業で提案することです。

ありがとうございました。

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

delphi - Delphi Indy IdTcpClient 読み取り操作で、特定の 1 つの要求に対して切り捨てられたデータが返される

これは私がまだ解決できていない興味深い問題です。

インターネットを介してサーバーと通信するクライアントを作成しています。RAD Studio 2007 ネイティブ パーソナリティを使用して、Indy 10 で TIdTcpClient Internet Direct (Indy) コンポーネントを使用しています。

サーバーからデータを取得するために、SSL を使用してポート 443 経由で HTTP 要求を発行します。要求の詳細は HTTP メッセージ本文に含まれています。ここまでは順調ですね。このコードは、1 つの例外を除いて、まるで魔法のように機能します。

サーバーから約 336 KB の応答を生成する必要がある 1 つの要求を送信しています (HTTP 応答ヘッダーには Content-Length: 344795 が含まれています)。問題は、320KB しか返ってこないことです。XML 形式の応答は、XML 要素の途中で明らかに切り捨てられています。

価値のあることとして、XML は単純なテキストです。切り捨ての原因となる特殊文字はありません。私の TIdTcpClient コンポーネントは、部分的な応答を受信した後、サーバーが接続を正常に閉じたことを報告するだけです (これは、切り捨てられていないものであっても、すべての応答が完了すると予想されるため、問題ではありません)。

応答も数キロバイトを超える同じサーバーに対してほぼ同じ呼び出しを行うことができ、これらはすべて正常に機能します。私が行う 1 つの要求では約 850 KB が返され、別の要求では約 300 KB が返されます。

つまり、特定の 1 つの要求でのみこの問題が発生します。多数ある他のすべての要求は、完全な応答を受け取ります。

私はサービスの作成者と話し、私の要求の例を提供しました。彼はその要求が正しいと報告した. 彼はまた、彼のサーバーに同じリクエストを発行すると、完全な応答が得られるとも言いました。

私は途方に暮れています。サービスの作成者が間違っていて、実際にはその側の応答に問題があるか、または私の要求に何か特別なものがあります。

私が見逃している解決策はありますか?他の多くの読み取りメカニズム (ReadString、ReadStrings、ReadBytes など) も使用しましたが、すべて同じ結果 (320KB マークでのこの 1 つの特定の応答の切り捨て) を生成することに注意してください。

コードはおそらく関係ありませんが、とにかく含めます。申し訳ありませんが、専有情報が含まれているため、XML リクエストを含めることができません。(ReadTimeout は 20 秒に設定されていますが、リクエストは約 1 秒で返されるため、タイムアウトの問題ではありません。)