PDA

View Full Version : ارسال یک string به idtcpclient



masood2004
یک شنبه 20 آذر 1384, 08:07 صبح
How do I get the string send from the server to my IdTCPClient component

چطور میتونم یک string رو از idtcpserver به یک کلاینت با کامپوننت idtcpclient بفرستم؟
در اتصال کلاینت به سرور مشکلی نیست.حتی کلاینت هم به راحتی میتونه به سرور یه دستور بفرسته اما سرور چه طوری به یه کلاینت پیغام بفرسته؟
من دارم روی یه messenger با دلفی و ایندی کار میکنم.تقریبا همه چیزش حله فقط موندم که کلاینت از کجا بفهمه که یه پیغام براش اومده .یه راهش اینه که هر چند ثانیه (مثلا 5 ثانیه ) یه بار یه درخواست به سرور بفرسته و لیست آخرین پیغامهاش رو بخاد اما این کار درستی نیست .

کسی راه بهتری بلده؟ لینک سورس یه مسنجر با دلفی هم باشه کارو رو راه میندازه.
باتشکر.

MiRHaDi
یک شنبه 20 آذر 1384, 19:13 عصر
سلام
وقتی پیامی میاد Event میده ! مشکلش چیه ؟
با WinSocket هم کار کنی Event داره
بای

masood2004
جمعه 25 آذر 1384, 02:23 صبح
سلام
وقتی پیامی میاد Event میده ! مشکلش چیه ؟
با WinSocket هم کار کنی Event داره
بای
قربون دهنت.وقتی یه پیام بیاد یه event اتفاق میافته ولی اگه کلاینت پیامی نده چی؟یعنی چطوری به سرور بگم که به فلان کلاینت یه پیام بفرست .
من دارم یه مسنجر مینویسم .وقتی کلاینت یه پیام بفرسته command handler اش توی سرور اجرا میشه که یه Thread میسازه .بعد میشه با Response و... به کلاینت هرچی میخوای بگی.ولی وقتی کلاینت پیامی نفرستاده اما سرور میخواد بهش بگه که یه پیام داری باید چکار کنم؟
در اصل دو تا سوال هست:
1- آدرس کلاینت رو که وصل شده چطور نگه دارم؟
2- چطوری سرور میتونه به یه کلاینت یه پیام بفرسته؟sendcmd یا writeln یا ....؟
با تشکر

MiRHaDi
سه شنبه 29 آذر 1384, 11:26 صبح
سلام
سرور همونجوری که به کلاینت میفرسته که کلاینت به سرور فرقی نداره :)
وقتی کانکت میشه IP رو توی یک لیست Save‌ کن و وقتی قطع شد از لیست پاک کن
بای

vcldeveloper
چهارشنبه 30 آذر 1384, 02:34 صبح
وقتی متنی از سرور به کلاینت ارسال میشه، باید کلاینت قبلش از ارسال متن آگاهی داشته باشه، تا بتونه متن ارسالی را بخونه. تا جایی که من می دونم در برنامه شما کلاینت از زمان ارسال متن ها توسط سرور آگاهی نداره، پس نمی تونه متن ارسال شده را بخونه؛ غیر از اینکه متن ها در فواصل زمانی معینی ارسال بشند و کلاینت هم در فواصل زمانی معینی اونها را بخونه.
راه حل ساده ایی که الان به ذهنم میرسه اینه که در کلاینت هم از یک idTcpServer استفاده کنی تا روی پورت خاصی همیشه گوش به زنگ پیغام های ارسالی از طرف سرور باشه.
می تونی لیست IP کلاینت های متصل به سرور را از طریق خصوصیت Threads در TidTcpServer بدست بیاری و براشون پیغامی از طرف سرور به پورت مشخصی بفرستی. کلاینت ها هم می تونند از طریق کامپوننت IdTcpServer خودشون پیغام رو دریافت کنند.