チャットソフトに適したお手軽なコンポーネントはどんなのがいいでしょうか?
TNMMsg と TNMMSGServ で作成して、通常は問題ないレベルまでできたのですが、
お互いに高速(1秒間隔くらい)に文字列をどんどん送っていくと、どちらか
一方が送信できなくなってしまいます。
ゆっくりだと問題ないので、このコンポは(Delphi5についているものです)
こういうものなのかなぁと思ったりしています。
TNM系は使ったこと無いので、ソース見てトレースしないと
なんともいえませんが、ローカルでテストしてみても
そういう事になるようなら、どこかに問題があるのではないか…と思います。
1秒間隔で こけるというのは、たぶんバッファの処理がうまく
いっていません。どこで文字列を区切るかは、通信の世界
では自分で決めることなので、1行単位のチャットなら
送信側の文字列の最後に改行コードを追加し、受信側では
その改行を手がかりに文字列の塊から自分で行に分解するといった
処理が必要になってくるのではないかと思います。
(改行じゃなくてもかまいませんが、改行がいいと思います)
(TNM系は分かりません。もしかしたら、その辺のことは自動で
やるのかもしれません)
TCPIP系のコンポーネントは、D5付属の物を使うより、
サイトを巡って自分にあうコンポーネントやクラスをみつけて、
それを参考に自分用のを1つつくってしまうのも手です。
中には、かなりシンプルで、たったこれだけか 見たいな物も
あります。
結局のところ、改行の処理とか、文字コードの処理など自分で
把握しておかねばならない事を忘れていると、あとから問題とし
て出てきた時、修正が大変だと思うので、自分でコンポーネントを
つくってみるのは、いいことだと思います。
桜島子宮(昔は、ずいぶんお世話になりました)
http://www.kobira.co.jp/sakura/free.htm
で紹介されている
DelphiのWinsock APl, FTP, Finger, Etc. 以下にある
wsock120.zip に含まれる examples.zip に
TCPとUDPのチャットプログラムっぽいものが含まれています。
などもよい参考になるのではと思います。
有名どころ、Synapseがいいと思います。
http://synapse.ararat.cz/
コンポーネントというよりライブラリですが、チャットとかの場合
これに含まれるもっとも上位のソケットコントロールから継承して
改行なしテキストの送受信のみに特化したほうが扱いやすくなると思います。
以上。
ありがとうございます。
サンプルは動作しましたので(コードは見てませんが^^;)、
しばらくがんばってみます。
UDPの方で実装してみたところ、100ms間隔でもエラーが出ませんでした。
いいコンポを紹介していただき、ありがとうございました。
(TCPの方はsocketが無いというエラーが出て何故かだめでしたが・・・)
ツイート | ![]() |