PDA

View Full Version : TClientSocket و TServerSocket



orion188
دوشنبه 02 شهریور 1383, 18:17 عصر
سلام
من با استفاده از این دو کامپوننت ، یک نرم افزار چت دونفره نوشتم ، که هم سرور میتونه باشه و هم کلاینت.

روی سیستم خودم وقتی اجرا میکنم (هر دو رو با هم ) و از آدرس 127.0.0.1 استفاده میکنم ، در فرستادن Text مشکلی ندارم.
اما وقتی دیتا میفرستم ، در بسته های مثلا" یک کیلوبایتی ، به نظر میرسه بعضی از اونها به برنامه دوم نمیرسن.

کسی پیشنهادی نداره؟
ممنون میشم

Gladiator
دوشنبه 02 شهریور 1383, 18:45 عصر
روی کامپیوتر دیگه ای برنامه کلاینت رو اجرا کن و تست کن . اگر باز هم مشکلی بود توی برنامه نویسی مشکل داری .

orion188
دوشنبه 02 شهریور 1383, 19:17 عصر
سلام
من دقیقا" که بررسی میکنم ، میبینم یه جای خاص این ارتباط قطع میشه. سناریو به این ترتیبه:

...
- کلاینت یک بسته میفرسته با طول n
- سرور یک بسته میخونه با طول n
- سرور بسته پاسخ رو میفرسته
- کلاینت پاسخ رو میخونه و یک بسته میفرسته با طول کمتر از n (مثلا" m) . چون بسته آخر مربوط به این فایله
- سرور سعی میکنه بسته ای به طول n رو بخونه ، اما m بایت دریافت میکنه (تا اینجا مشکلی نیست)
- سرور پاسخ میده که بسته آخر رو دریافت کردم
- کلاینت شروع به فرستادن بسته اول فایل بعدی میکنه (که طولش همون n هست)
- سرور بسته ای با طول n دریافت میکنه
- سرور سعی میکنه پاسخ بده که بسته رو دریافت کرده اما پاسخ نمیرسه

این بود کل ماجرا.
خودمم احساس میکنم مشکل برنامست. ممنون میشم

orion188
دوشنبه 02 شهریور 1383, 19:24 عصر
راستی برای خواندن از Socket از تابع ReceiveBuf در رویداد OnRead استفاده میکنم. تعداد بایت اولیه رو هم n میدم که خودش هر چقدر تونست بخونه.

Gladiator
دوشنبه 02 شهریور 1383, 21:37 عصر
سلام ؛

من یه نمونه برات درست میکنم و میفرستم . ولی چقدر طول بکشه رو خدا میدونه . امیدوارم براش عجله نداشته باشی .