1

Windows フォームで ScktComp と Winsock を使用してチャット サーバーを作成しました。コンソール アプリケーションで同じことを行うにはどうすればよいですか?

これを出発点として見つけましたが、内部のリンク(スレッドの作成者が「ほぼ完璧な答え」と答えたもの)は期限切れです。

コンソール アプリ内のServerSocketClientConnect/およびその他のメソッドに相当するものは何ですか?ClientSocketConnect

4

2 に答える 2

3

Delphi は、コンソール アプリケーションで同じクラスと非ビジュアル コンポーネントを使用します。使用するクラスを変更する必要はありませんが、Delphi IDE に頼ってコードを生成するのではなく、手動で入力してユニットに追加する方法を学ぶ必要があります。

以下の手順を使用して自分で作成することも、非ビジュアル コンポーネントを含む VCL Win32 GUI アプリケーションをコンソール アプリケーション内で使用するときに、既に構築されているデータ モジュールを使用することもできます。

手順:

  1. 使用するクラスまたはコンポーネントを含むユニット名を Uses 句に追加します。

  2. コンポーネントをクラスのように構築します。

      var
        aSomething:TSomething;
      begin
        aSomething := TSomething.Create(Parameter1,Parameter2);
      end;
    
  3. 適切な場所で解放することを忘れないでください。

         aSomething.Free;
    

しかし、なぜチャットサーバーをおもちゃや実験以外のコンソールアプリケーションに変えたいのか理解に苦しむ. 実際の使用では、おそらく Win32 GUI が必要です。または、APPTYPE をコンソールに変更せずに作成でき、GUI なしで実行できる、完全に非ビジュアルなサービス (NT スタイルのサービス) が必要な場合があります。それでもないし。

コンソール アプリケーションを作成する主な実用的な理由は、ビルド ヘルパー ユーティリティなど、コマンド ラインから役立つものを作成することです。コンソール アプリケーションを作成すること自体は非常に簡単です。新しい空のコンソール アプリケーションを作成することから始め、それに新しい空のパスカル ユニットを追加し、メイン メソッドを作成してから、作業中のメイン ユニットの uses 句に必要なユニット名を追加します。それだけです。

現在使用しているサーバー ソケットとクライアント ソケットを引き続き使用することもできますが、本当に必要でない限り、コンソール アプリについては忘れることをお勧めします。本当の目的がなくて難しい。コンソール アプリケーションで使用するためにコンポーネントやクラスを変更する必要はありませんが、GUI やコンソールと同様に、Delphi の [インターネット] タブにある TTcpClient および TTcpServer コンポーネントは、実際の使用には適していません。あらゆる実世界のアプリケーション。それらは下位互換性のために存在し、「時代遅れ」であり、「深刻な方法で使用されなくなった」と見なされるべきです。

Indy、ICS、Synapse などの実際の TCP/IP ライブラリを見てください。ただし、コンポーネント パレットの「インターネット」ページのコンポーネントを除きます。 「おもちゃ」。

于 2013-01-03T14:12:55.940 に答える
-1

一部の VCL クラスには、Windows メッセージ ループやウィンドウ ハンドルが必要です。そのため、アプリケーションの種類を変更すると、それらが機能しなくなる可能性があります。

また、既存のコードsynchronizeが VCL メイン スレッドでコードを実行するために使用されているかどうかも確認してください。VCL 以外のアプリケーションで同期を使用すると、危険な場合があります。

于 2013-01-03T15:29:19.417 に答える