Windows フォームで ScktComp と Winsock を使用してチャット サーバーを作成しました。コンソール アプリケーションで同じことを行うにはどうすればよいですか?
これを出発点として見つけましたが、内部のリンク(スレッドの作成者が「ほぼ完璧な答え」と答えたもの)は期限切れです。
コンソール アプリ内のServerSocketClientConnect
/およびその他のメソッドに相当するものは何ですか?ClientSocketConnect
Windows フォームで ScktComp と Winsock を使用してチャット サーバーを作成しました。コンソール アプリケーションで同じことを行うにはどうすればよいですか?
これを出発点として見つけましたが、内部のリンク(スレッドの作成者が「ほぼ完璧な答え」と答えたもの)は期限切れです。
コンソール アプリ内のServerSocketClientConnect
/およびその他のメソッドに相当するものは何ですか?ClientSocketConnect
Delphi は、コンソール アプリケーションで同じクラスと非ビジュアル コンポーネントを使用します。使用するクラスを変更する必要はありませんが、Delphi IDE に頼ってコードを生成するのではなく、手動で入力してユニットに追加する方法を学ぶ必要があります。
以下の手順を使用して自分で作成することも、非ビジュアル コンポーネントを含む VCL Win32 GUI アプリケーションをコンソール アプリケーション内で使用するときに、既に構築されているデータ モジュールを使用することもできます。
手順:
使用するクラスまたはコンポーネントを含むユニット名を Uses 句に追加します。
コンポーネントをクラスのように構築します。
var
aSomething:TSomething;
begin
aSomething := TSomething.Create(Parameter1,Parameter2);
end;
適切な場所で解放することを忘れないでください。
aSomething.Free;
しかし、なぜチャットサーバーをおもちゃや実験以外のコンソールアプリケーションに変えたいのか理解に苦しむ. 実際の使用では、おそらく Win32 GUI が必要です。または、APPTYPE をコンソールに変更せずに作成でき、GUI なしで実行できる、完全に非ビジュアルなサービス (NT スタイルのサービス) が必要な場合があります。それでもないし。
コンソール アプリケーションを作成する主な実用的な理由は、ビルド ヘルパー ユーティリティなど、コマンド ラインから役立つものを作成することです。コンソール アプリケーションを作成すること自体は非常に簡単です。新しい空のコンソール アプリケーションを作成することから始め、それに新しい空のパスカル ユニットを追加し、メイン メソッドを作成してから、作業中のメイン ユニットの uses 句に必要なユニット名を追加します。それだけです。
現在使用しているサーバー ソケットとクライアント ソケットを引き続き使用することもできますが、本当に必要でない限り、コンソール アプリについては忘れることをお勧めします。本当の目的がなくて難しい。コンソール アプリケーションで使用するためにコンポーネントやクラスを変更する必要はありませんが、GUI やコンソールと同様に、Delphi の [インターネット] タブにある TTcpClient および TTcpServer コンポーネントは、実際の使用には適していません。あらゆる実世界のアプリケーション。それらは下位互換性のために存在し、「時代遅れ」であり、「深刻な方法で使用されなくなった」と見なされるべきです。
Indy、ICS、Synapse などの実際の TCP/IP ライブラリを見てください。ただし、コンポーネント パレットの「インターネット」ページのコンポーネントを除きます。 「おもちゃ」。
一部の VCL クラスには、Windows メッセージ ループやウィンドウ ハンドルが必要です。そのため、アプリケーションの種類を変更すると、それらが機能しなくなる可能性があります。
また、既存のコードsynchronize
が VCL メイン スレッドでコードを実行するために使用されているかどうかも確認してください。VCL 以外のアプリケーションで同期を使用すると、危険な場合があります。