PDA

View Full Version : ارسال عکس در شبکه ...



Mahmood_M
چهارشنبه 27 دی 1385, 15:14 عصر
سلام
من با کامپوننت های TCpClient و TCpServer یا IdTCpClient و IdTCpServer ، کلینت و سرور رو کانکت می کنم ...
حالا می خوام توسط سرور یک عکس رو به کلینت ارسال کنم ...
راستش هرچقدر با ReadStream و WriteStream و یا ReadBuffer و WriteBuffer امتحان کردم نشد !
من یه متغیر از نوع Stream می سازم و بعد با اون Buffer رو می خونم و بعد عکس رو از توی اون لود می کنم ولی متاسفانه نمی شه ! ...
خودم فکر می کنم که توی ارتباط و نحوه فرستادنش مشکل باشه ...
اگه یه دوستی یه خورده توضیح بده ممنون می شم ( نحوه فرستادن و گرفتن رو ... ) ...
در ضمن با کامپوننت های VC خیلی راحت می شه این کار رو کرد ولی من نسخه کاملش رو نتونستم گیر بیارم ، مسخه دمو هم بیشتر از 16 کیلوبایت ارسال و دریافت نمی کنه ... !!

به هر حال منتظر جوابتون هستم ...
با تشکر ...

MNosouhi
چهارشنبه 27 دی 1385, 15:19 عصر
عزیزم قبلا برای ارسال فایل با indy مثالی آپلود شده ، جستجو کنی پیداش می کنی.

Mahmood_M
چهارشنبه 27 دی 1385, 16:23 عصر
سلام
ممنون ...
گشتم ولی نتونستم پیدا کنم ...
میشه لینکش رو بزارید یا ...
با تشکر ...

vesal
چهارشنبه 27 دی 1385, 18:02 عصر
http://delphi.about.com/od/internetintranet/l/aa012004a.htm

dkhatibi
چهارشنبه 27 دی 1385, 18:49 عصر
در دموهای خود INDY هم هست.

www2006
چهارشنبه 27 دی 1385, 18:52 عصر
سلام
من با کامپوننت های TCpClient و TCpServer یا IdTCpClient و IdTCpServer ، کلینت و سرور رو کانکت می کنم ...
حالا می خوام توسط سرور یک عکس رو به کلینت ارسال کنم ...
راستش هرچقدر با ReadStream و WriteStream و یا ReadBuffer و WriteBuffer امتحان کردم نشد !
من یه متغیر از نوع Stream می سازم و بعد با اون Buffer رو می خونم و بعد عکس رو از توی اون لود می کنم ولی متاسفانه نمی شه ! ...

با تشکر ...

فرض میکنیم برای عکس خود از متغیری بنام JpegStream از نوع TMemoryStream یا TFileStream استفاده میکنید ( و عکس خود را در آن لود کرده اید) ...
در سمت فرستنده :



IdTCPClient1.WriteInteger(JpegStream.Size);
IdTCPClient1.OpenWriteBuffer() ;
IdTCPClient1.WriteStream(JpegStream) ;
IdTCPClient1.CloseWriteBuffer ;
FreeAndNil(JpegStream) ;
و در سمت گیرنده :



recieveStreamPic := TFileStream.Create('pic.jpg',fmCreate);
strSize := Athread.Connection.ReadInteger();
Athread.Connection.ReadStream(recieveStreamPic,str Size,False);
FreeAndNil(recieveStreamPic);

// برای نمایش عکس در برنامه
JpgImage := TJPEGImage.Create ;
JpgImage.LoadFromFile('pic.jpg');
Image1.Picture.bitmap.Assign(JpgImage);
(توضیح سمت گیرنده : StrSize از نوع Integer است و recieveStreamPic متغیریست از نوع TFileStream .... و JpegImage از نوع TJPEGImage و Imaege1 هم یک TImage است )

MNosouhi
چهارشنبه 27 دی 1385, 23:32 عصر
گشتم ولی نتونستم پیدا کنم ...
یه مثال ساده از ارسال فایل در شبکه

Mahmood_M
شنبه 30 دی 1385, 13:05 عصر
سلام
بابا شما دیگه کی هستید ... ( دمتون گرم ) !
دستتون درد نکنه ، شرمندم کردید ...
از همتون ممنونم ...


در دموهای خود INDY هم هست.
درسته ولی نمی دونم چرا پوشه دموهای Indy من خالی هست !! ( همه هستن ولی Indy دموهاش نیست ) ، قبلا نصب کرده بودم ولی الان که نصب کردم نیست ...

به هرحال بازم از همتون ممنونم ...
اگه بازم مشکلی بود می گم ...
موفق باشید ...

dkhatibi
شنبه 30 دی 1385, 18:14 عصر
سلام
بابا شما دیگه کی هستید ... ( دمتون گرم ) !
دستتون درد نکنه ، شرمندم کردید ...
از همتون ممنونم ...


درسته ولی نمی دونم چرا پوشه دموهای Indy من خالی هست !! ( همه هستن ولی Indy دموهاش نیست ) ، قبلا نصب کرده بودم ولی الان که نصب کردم نیست ...

به هرحال بازم از همتون ممنونم ...
اگه بازم مشکلی بود می گم ...
موفق باشید ...

اگر سی دی دلفی 6 داری یک جستجویی داخلش بکن.