PDA

View Full Version : سوال: انتقال صحيح اطلاعات از طريق سوکت در شبکه



sds1920
یک شنبه 22 مرداد 1391, 09:05 صبح
سلام.
من دارم برنامه اي با سوکت توي شبکه مي نويسم و مي خوام اطلاعات رو به صورت آرايه اي از بايت ها انتقال بدم.اطلاعات به صورت بلوک هاي 2 کيلوبايتي ارسال مي شه.
سوال من اينه که در صورتي که حجم اطلاعات بيشتر از 2KB بشه کدوم يکي از دو روش زير در شبکه بهتر هست و سرعت انتقال رو بيشتر مي کنه :
1)اطلاعات به صورت يک بلوک بزرگ ارسال بشه.
2)اطلاعات به بلوک هاي 2KB شکسته بشه و بعد اين بلوک ها انتقال داده بشه.

Sajjad.Aghapour
یک شنبه 22 مرداد 1391, 10:47 صبح
چرا بلاک های 2 کیلو بایتی؟ میدونید این کار چقدر از پهنای باندتون رو ضایع میکنه؟ چرا اجازه نمیدید بسته ها بر اساس MTU که خود شبکه در نظر گرفته ارسال بشن؟

sds1920
دوشنبه 23 مرداد 1391, 08:47 صبح
ممنون که در مورد MTU يادآوري کردين.سعي مي کنم سايز بسته ها را بر همين اساس تنظيم کنم.اما 2KB که من گفتم سقف بافرم بود يعني اطلاعات تا حداکثر 2KB در هر بسته ارسال مي شه و اگه کمتر از 2KB باشه همون مقدار موجود ارسال مي شه.سوال اصلي من در مورد اطلاعاتي بود که حجمش چند ده کيلوبايت هست.بهتره اين فايلها به صورت يکجا ارسال بشن يا تکه تکه؟

Sajjad.Aghapour
چهارشنبه 25 مرداد 1391, 12:05 عصر
این وظیفه شما نیست که سایز بسته ها رو تنظیم کنید یا اینکه با توجه به سقف بافر NIC اونها رو ارسال کنید مگر اینکه سیاست خاصی رو دنبال کرده باشید. به هر حال اجازه بدید بسته تماما ارسال بشه و خود Network یا Network Interface شما این مکانیزم رو کنترل کنند...

saman_h
پنج شنبه 26 مرداد 1391, 10:59 صبح
دوستمون درست میگن . شما فقط کافیه که اطلاعاتتون رو به بایت تبدیل کنید نیازی نیست سایز خواصی واسش در نظر بگیری . بذار خودش هرچقد میشه بشه بعد شما فقط ارسالش کن اونجا خودش هرطور لازم باشه ارسال میشه
به این صورت :
اول اینو باید تعریف کنی ( دیگه خودت که واردی ) :
public Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
بعدش واسه ارسال اطلاعاتت :
byte[] b = Encoding.UTF8.GetBytes("متن مورد نظر");
sock.Send(b, SocketFlags.None);

korosh00
پنج شنبه 26 مرداد 1391, 12:39 عصر
سلام
من می خوام یک برنامه بنویسم که تو رایانه ای مشخص می کنم در شبکه نوت پد بازبشه .
و یا اینکه در دیتابیسی که در شبکه است در رایانه ای باآی پی 192.168.0.2 بتونم دیتابیس را پر کنم .
ممنون فقط یک نمونه عملی برام بدید کوتاه و مفید ممنون میشم .

amir4015
پنج شنبه 26 مرداد 1391, 16:10 عصر
دوست عزيز انشاالله كه نمي خوايي تروجان بنويسي

korosh00
پنج شنبه 26 مرداد 1391, 21:52 عصر
نه
میخوام برنامه نویسی در داخل شبکه را یاد بگیرم .برای دیتابیس می خوام .
می خوام بشه از یک رایانه به رایانه دیگه پیام هم ارسال کرد مثلا نوت پد باز بشه و بگه سلام یک جوری چت کردن .

saman_h
جمعه 27 مرداد 1391, 20:21 عصر
دوست عزیز پس از همون روشی که گفتم استفاده کنید ... نیازی به نوت پد نیست دیگه !! یه برنامه کوچولو طراحی کن که دوتا Textbox یا RichtextBox داشته باشه و یه دکمه که متن رو بگیره و دتونی متن رو بفرستی . نمونه خواستی توی تاپیک ها سرچ بزن پیدا میکنی اگرم پیدا نشد بگو یه نمونه ساده واست بذارم
فقط کارای خطرنااااااااااک نکنیااااااااااااااااااااا اا !!!
موفق باشی

korosh00
شنبه 28 مرداد 1391, 00:32 صبح
دستت درد نکنه ی چند تا نمونه دارم فقط توضیحاتی خط به خط را می خوام بدونم . خیلی لازم دارم
اگه یک نمونه کوچک بزاری و برای هر خط توضیح بدی خیلی ممنون میشم .
هر چی زودتر بهتر تو این تعطیلات روش کار کنم .
ممنون

saman_h
شنبه 28 مرداد 1391, 11:42 صبح
بفرما :
http://uplod.ir/mljph9poj9y2/Sample.rar.htm
همه کارهایی که انجام دادم واضح هست اگر یخورده کار کرده باشی متوجه میشی
اگه سوالی داشتی پیام بذار تا بیشتر واست توضیح بدم

korosh00
شنبه 28 مرداد 1391, 11:52 صبح
سلام
دستت درد نکنه
من میخوام این چند خط را (هر خط - هر متغییر برای چی تعریف شده ) را توضیح بدی مثلا توی یک پی دی اف یا ورد تا من متوجه بشم .
نمونه برنامه دارم .
لطف می کنی اگه امکان داره این چند خط را (خط به خط) توضیح بدی ممنون میشم .
تشکر

m.khani_121
شنبه 28 مرداد 1391, 12:25 عصر
سلام دوستان عزیز. بچه ها امکانش هست که بشه یه دیتابیس کامل رو با سوکت فرستاد ؟؟ اگه میشه با توجه به هر حجمی چقدر طول میکشه ؟

saman_h
شنبه 28 مرداد 1391, 12:46 عصر
بفرما اینم از توضیحات . هرچی تونستم نوشتم :
http://uplod.ir/i1b3w0zoub6c/Server.docx.htm
http://uplod.ir/iqtdu4fnhqtp/Client.docx.htm

saman_h
شنبه 28 مرداد 1391, 12:48 عصر
سلام دوستان عزیز. بچه ها امکانش هست که بشه یه دیتابیس کامل رو با سوکت فرستاد ؟؟ اگه میشه با توجه به هر حجمی چقدر طول میکشه ؟

سلام دوست عزیز
من کار نکردم اما کار نشد نداره . احتمال زیاد باید سطر سطر اطلاعات رو کد کنی و بفرستی . فقط بعد واسه دریافتشون و جدا کردنشون یکم اذیت میشه باید هی Split کنی و ...
دوستانی که اینکارو با DataBase کردن بهتر میتونن راهنماییت کنن . توی تالار و تاپیک ها هم سرچ برنی مطلب زیاد گیرت میاد
موفق باشی

korosh00
شنبه 28 مرداد 1391, 17:58 عصر
سلام
خیلی ممنون سعی می کنم از مطالبتون نهایت استفاده را ببرم .
تشکر

saman_h
یک شنبه 29 مرداد 1391, 00:47 صبح
سلام
خیلی ممنون سعی می کنم از مطالبتون نهایت استفاده را ببرم .
تشکر

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