PDA

View Full Version : سوکت نویسی ومشکلات کار با ان.



hjran abdpor
سه شنبه 17 خرداد 1390, 19:02 عصر
با سلام به دوستان گل.
اقا من نمدونم پست ها من چه مشکل داره که حذف میشن دیگه عنوانی بهتر ازاین پیدا نکردم.......

من یه برنامه نوشتم که یه فایلی را به یه کامپیوتر اننقال میده با ادرس کامپیوتر گیرنده حالا میخوام همین کار را برعکس انجام بدم فکر کنید برنامه کلاینت / سرور است و هر در میخوان به هم فایل بفرستن ؟؟؟؟؟؟؟

چه کار کنم که دو طرفه فایل ارسال بشه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

saman6384
سه شنبه 17 خرداد 1390, 22:38 عصر
الان فقط قسمت فرستادن فایل رو مشکل داری؟

با کد های زیر فایلت رو به آرایه بایت تبدیل کن
بعد با دستور send سوکت بفرس واسه اون یکی کامپیوتر

تو اون یکی کامپیوتر برعکس این کدها رو انجام بده

FileStream fs;
fs = File.Open("address", FileMode.Open);
byte[] data = new byte[2048];
int i = fs.Read(data, 0,(int) fs.Length);

hjran abdpor
سه شنبه 17 خرداد 1390, 22:56 عصر
با سلام داش سامان ............
برنامه ی را که نوشتم براتون میزارم ولی دو طرفه نیست ( تونستم به سیستم خودم فایل بفرستم ولی نمدونم بشه به سیستم دیگه ارسال کرد) ؟؟؟؟؟؟؟؟؟؟؟؟؟

به نظر شما چه کار کنم که دو طرفه بشه : به نظرم اینجوری بشه بهتره:
اول دو تا برنامه ی جدا اجرا بشن و به هم وصل شن مثل کلاینت / سرور بعد یه پورت به طور مشترک بین هر دو باز بشه و بتوننن اطلاعات بفرستن) راستی میشه یه پورت را برای هر دو استفاده کرد ؟؟؟؟؟؟؟؟؟؟؟

بعد دیگه عملیات ارسال و ..................

hjran abdpor
سه شنبه 17 خرداد 1390, 23:05 عصر
ببخشید یادم رفت . این هم برنامه
راستی من ارسال برام گنگ نیست بلکه نحوه دو طرفه کردنش برام گنگه........... از یه طرف کلاینت سروره ، از یه طرف Peer to peer و از یه طرفه دیگه هیچکدوم ...................................... نمدونم چه جوری فکر کنم....

hjran abdpor
چهارشنبه 18 خرداد 1390, 11:23 صبح
کسی نیس کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟

saman6384
چهارشنبه 18 خرداد 1390, 11:29 صبح
با سلام داش سامان ............
برنامه ی را که نوشتم براتون میزارم ولی دو طرفه نیست ( تونستم به سیستم خودم فایل بفرستم ولی نمدونم بشه به سیستم دیگه ارسال کرد) ؟؟؟؟؟؟؟؟؟؟؟؟؟

ینی چی به سیستم خودت فایل فرستادی؟

به نظر شما چه کار کنم که دو طرفه بشه : به نظرم اینجوری بشه بهتره:
اول دو تا برنامه ی جدا اجرا بشن و به هم وصل شن مثل کلاینت / سرور بعد یه پورت به طور مشترک بین هر دو باز بشه و بتوننن اطلاعات بفرستن) راستی میشه یه پورت را برای هر دو استفاده کرد ؟؟؟؟؟؟؟؟؟؟؟

اتفاقا باید پورتهاشون یکی باشه!!!

بعد دیگه عملیات ارسال و ..................

اگه از پروتکل tcp استفاده کنی میشه کلاینت و سرور
اگه از udp استفاده کنی جفته برنامه هات کداشون یجوره و دیگه کلاینت و سرور نیس!

قبلا راجب برنامه چت تاپیک داشتیم
اگه سرچ کنی کلی مثال گیرت میاد!

hjran abdpor
چهارشنبه 18 خرداد 1390, 11:33 صبح
گشتم برنامه های چت بود ولی خیلی پیچیده و اکثرا Dll بود که به درد من نمخوره .

به نظر شما از udp استفاده کنم بهتره ، کدوموش زیاد وقت نمیگیره ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

saman6384
چهارشنبه 18 خرداد 1390, 11:44 صبح
این یه نمونه ساده چت
اول هاست رو run کن بعد کلاینت

saman6384
چهارشنبه 18 خرداد 1390, 11:48 صبح
کد نویسی جفتش که مثه همه تقریبا
ولی شما چون تبادل درست اطلاعات برات مهم هست (چون فایل داری میفرستی) از tcp استفاده کن!

نکته : اگه سرعت مهم باشه از udp استفاده میشه! چون دیگه چک نمیکنه که اطلاعات درست به مقصد رسیده یا نه!

B.I.O.H.A.Z.A.R.D
چهارشنبه 18 خرداد 1390, 11:58 صبح
البته توی کتاب مهندسی اینترنت اونطور که یادمه نوشته بود اگه میخواید فایل انتقال بدید از پروتکل udp استفاده کنید(بهتره). همچنین اگر سرعت مهمه براتون.

یه نمونه کد دیگه میذارم با vs2008 اول سرور اجرا بشه بعد کلاینت

saman6384
چهارشنبه 18 خرداد 1390, 12:13 عصر
مطمئنی؟؟
آخه اگه یک بایت هم این وسط گم بشه که فایل ناقص در میاد!!!

B.I.O.H.A.Z.A.R.D
چهارشنبه 18 خرداد 1390, 12:22 عصر
مجبورم کردی کتابو از توی انباری بکشم بیرون :لبخند:

اینو بخونید ببینید در مورد TCP چی گفته. از استادمون هم پرسیدم گفت فایل ناقص نمیشه، بلکه از کیفیتش کم میشه.

http://031.img98.net/out.php/i385370_08062011101.jpg

saman6384
چهارشنبه 18 خرداد 1390, 12:34 عصر
User Datagram Protocol (UDP) is a communications protocol used to transfer data across IP networks. UDP, an alternative to the Transmission Control Protocol (TCP), is a connectionless protocol. Unlike the TCP protocol, UDP does not require verification from the receiving side of the transfer and will not establish an end-to-end channel through which units of data (formally referred to as Data Packets) are sent. Instead, data packets are just fired off to the receiving server.

As UDP does not require acknowledgement from the receiving side thus reducing processing overheads, it dramatically increases the speed of file transfers and avoids the impact of latency on data communications. On the other hand it does not provide any form of error reporting, therefore cannot guarantee the reliability of data transfers unless accompanied by a supporting protocol. Also UDP does not provide sequencing of data, meaning that the data packets sent can arrive at their desired destination in the wrong order.


والا خارجکیا که میگن udp ارتباط مطمئنی نیست! و ممکنه اطلاعات توش گم شه!:متفکر::لبخند:

saman6384
چهارشنبه 18 خرداد 1390, 12:39 عصر
البته نمیگم با UDP نمیشه فرستادا!!
میگم TCP اطمینانش بیشتره!:چشمک:

hjran abdpor
چهارشنبه 18 خرداد 1390, 12:52 عصر
مرسی از دوستان گل .
من هم خیلی خوندم در tcp , udp ولی به این نتیجه رسیدم که حرف خارجی ها معتبر است تا با این ترجمه ها ی جور واجور اکتفا کرد .

hjran abdpor
چهارشنبه 18 خرداد 1390, 12:54 عصر
مرسی از دوستان گل .
من هم خیلی خوندم در tcp , udp ولی به این نتیجه رسیدم که حرف خارجی ها معتبر است تا با این ترجمه ها ی جور واجور اکتفا کرد .

hjran abdpor
چهارشنبه 18 خرداد 1390, 16:41 عصر
با سلام دوباره دوستان گل.....
شما فکر کنم از بحث خارج شدیم. من چت نمیخوام (این برنامه های هم با کنسول بود ) من ارسال فایل به صورت دو طرفه میخوام ؟؟؟؟؟؟؟؟؟؟؟

saman6384
چهارشنبه 18 خرداد 1390, 18:27 عصر
خوب عزیز اون برنامه ها رو دادم که ببینی روش سوکت چجوریه!
حالا تو هر نوع برنامه ای بخوای کار کنی به همون روش راحت میتونی کارتو راه بندازی!
فقط اون قسمتش که مسیج رو تو تابع send میزاری
جای مسیج ، استریم فایلتو بزار
اونورم استریمو بگیر تبدیل به فایل کن!

hjran abdpor
چهارشنبه 18 خرداد 1390, 22:36 عصر
با تشکر داش سامان.
اگه مشکلی داشتم تو همین پست مطرح میکنم جوابموبدبد ممنون میشم

hjran abdpor
چهارشنبه 18 خرداد 1390, 23:11 عصر
چاکریم داش سامان...............

برنامه را تحت ویندوز کردم ، کانکت میشن ولی دو سه تا خطا داره ، ممنون میشم ببنید و بگید چه کار کنم تا رفع بشن ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

راستی حالا چه جوری فایل را به دو طرف ارسال کنم ؟؟؟؟؟؟؟؟؟؟

کجا این تکه کد مربوط به تبدیل فایل به ارایه را بزارم که رو هر دو طرف جواب بده !!!!!!!!!!!!!!!!!!!!!!!!!!
ممنون جواب یدین ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

این هم برنامه.

hjran abdpor
پنج شنبه 19 خرداد 1390, 12:16 عصر
کسی نیست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟

mehran_minayi
پنج شنبه 19 خرداد 1390, 16:53 عصر
سلام چرا از Ftp استفاده نمی کنید؟
یا Web Service

hjran abdpor
پنج شنبه 19 خرداد 1390, 17:14 عصر
چه عجب یکی جواب ما را داد...................

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