delphi5のServerSoketとdelphi7のTcpServerは置き換え可能?

解決


しゃけ  2003-11-27 03:57:47  No: 5782  IP: [192.*.*.*]

ServerSocketに関する質問をWEBで
さがしこの掲示板にたどり着きました。
しかし、ちょうど回答はDelphi7では
コンポーネントがなくなっているとのことで
スレッドが終わっていたため、Delphi7に関しての
新規質問として書き込みます。
よろしくお願いします。

Delphi5でServerSocketコンポーネントを使って
作成されたプログラムをDelphi7に移行することに
なりました。
(ちなみに通信機能の作成は今回はじめて
チャレンジします。ソケット通信ができた
らシリアル通信…ああ。用語の使い方がお
かしかったら突っ込みをいれてください。)

TcpServer(socket)コンポーネントに置き換えれば
同じ動きをするのではないかと思い(「DEMO」で
CHATを作成する時にこのコンポーネントを使って
いたので)Delphi7でTcpServerのイベントを見て
びっくり。そのまま当てはまりそうなイベントが
ないのです。

具体的には、ServerSocketのClientReadイベント
のことです。

見当違いなコンポーネントに手を出しているのか
それともソースの書き方でなんとかなるものなのか
をご存知の方教えてください。

以上です。

編集    削除
にしの  2003-11-27 05:07:17  No: 5783  IP: [192.*.*.*]

# シリアル通信は、RS232Cなどでのシリアル機器との通信では?

Demoを見る限りでは、OnAcceptイベントで処理していますね。OnAcceptを使えばよろしいかと思います。

Demoのチャットは、
「クライアント側」
クライアントがサーバにメッセージを送信
「サーバ側」
クライアントから送られてくるメッセージを取得し表示

だけのようですので、もう少し手を加える必要があると思います。


ちなみに、TIdTCPServerの場合は、OnExecuteで処理します。

編集    削除
Third  2003-11-27 18:33:04  No: 5784  IP: [192.*.*.*]

Delphi7でもServerSocket ClientSocketを利用出来ます。
Delphi7インストールディレクトリ内のreadmeを見ていただくと、
"お薦めしないコンポーネント"として説明があります。
過去のプログラムのメンテのときに使ったことがあります。
本当はTcpServer Tcpsocketを使っていくべきなのでしょうけれど。

にしのさんのレスを読ませていただいて、余裕のあるうちに
TcpServer Tcpsocketに置き換えないといけないなと思いました。
(個人的な感想こんなとこに書くなって感じですねw)

編集    削除
しゃけ  2003-11-29 01:11:28  No: 5785  IP: [192.*.*.*]

にしのさん、ThirdさんRESありがとうございました。

OnAcceptイベントに書く方向で進めていこうと
思います。

言葉が足らなくてすみません。
「おすすめしないコンポーネント」という形で
入れられることは調べていましたが、おすすめしないには
なにか理由があるんだろうと思って、断念しました。

以上です。

編集    削除
しゃけ  2003-11-29 01:19:57  No: 5786  IP: [192.*.*.*]

すみません、誤解を生むような書き方をしてしまいました。

># シリアル通信は、RS232Cなどでのシリアル機器との通信では?

ソケット通信アプリを作った後に
RS232Cでシリアル機器からデータをもらうアプリに挑戦、といういみでした。

以上です。

編集    削除
にしの  2003-11-29 06:33:52  No: 5787  IP: [192.*.*.*]

> 「おすすめしないコンポーネント」という形で
> 入れられることは調べていましたが、おすすめしないには
> なにか理由があるんだろうと思って、断念しました。

DelphiのVCLは、Kylix(Linux)との統合を考えているようです。
その上で、おすすめしないコンポーネントは、Windowsに特化した書き方をしているんだと思います。
中でも、Socket系はIndyにまとめたいような感じにも思えます。
Indy自体、9のバグフィックスがまだですし、10は形になっていませんが。
そういえば、Kylixもバージョン止まってますね。

編集    削除