PDA

نسخه کامل مشاهده نسخه کامل : ارسال فایل با Winsock



kholous
10-09-2012, 20:11
سلام ;
کسي ميتونه اين برنامه را طوري اصلاح کنه که وقتي فايل از طرف Client ارسال مي شود يک چيزي با اول يا آخر فايل ارسال شده اضافه بشه ، مثلاً IP آن Client يا پورتي که با انکنه متصل شده.
یا اگه فلان ip کانکت شد فایل مربوطه را در یک فولدر مشخصی ذخیره
چون مشکلش اينه که زماني که 2 يا چند Client باهم يک فايل هم اسم و مشابه ارسال کنند برنامه Error داده و بسته ميشه .؟
ممنون ميشم اگه کسي کمکم کنه .
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

sosani2007
02-10-2012, 10:08
سلام ;
کسي ميتونه اين برنامه را طوري اصلاح کنه که وقتي فايل از طرف Client ارسال مي شود يک چيزي با اول يا آخر فايل ارسال شده اضافه بشه ، مثلاً IP آن Client يا پورتي که با انکنه متصل شده.
یا اگه فلان ip کانکت شد فایل مربوطه را در یک فولدر مشخصی ذخیره
چون مشکلش اينه که زماني که 2 يا چند Client باهم يک فايل هم اسم و مشابه ارسال کنند برنامه Error داده و بسته ميشه .؟
ممنون ميشم اگه کسي کمکم کنه .
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

شما می تونید از توابع رشته ای Len و Mid استفاده کنید باور کن مشکلت حل می شه

kholous
03-10-2012, 18:22
ممکنه توی سورس به من نشون بدید ؟

sosani2007
03-10-2012, 19:38
من این رو خیلی خلاصه می گم

[php]
winsock1.senddata("Amir")


این دستور بالا مال سیستم کلاینت بود
حالا این دستور مال سیستم سرور هستش
getdata,a
من توی گت دیتا شک دارم ولی یک همچین شکلی به نظرم باید داشته باشه
winsock1.getdate,a
for i=1to len(a)
if mid(a,i,1)=a then
msgbox a
else
msgbox"ERR"
ببخشید من خیلی خلاصه گفتم اگر شما سورستون رو بهم بدید می تونم کاری کنم

kholous
04-10-2012, 15:40
من این رو خیلی خلاصه می گم

[php]
winsock1.senddata("Amir")


این دستور بالا مال سیستم کلاینت بود
حالا این دستور مال سیستم سرور هستش
getdata,a
من توی گت دیتا شک دارم ولی یک همچین شکلی به نظرم باید داشته باشه
winsock1.getdate,a
for i=1to len(a)
if mid(a,i,1)=a then
msgbox a
else
msgbox"ERR"
ببخشید من خیلی خلاصه گفتم اگر شما سورستون رو بهم بدید می تونم کاری کنم

♥♥ عذر می خوام ولی من سورس را بالا گذاشتم [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) میتونید دو تا خروجی client ازش بگیرید و یک فایل هم نام را از هر دو باهم ارسال کنید متوجه میشید .

Payman_62
04-10-2012, 19:15
سلام.
شما فایلت رو open کن. کل اطلاعاتش رو بخون و واسه طرف مقابل ارسال کن. خود winsock ارسال تکه تکه دیتا رو مدیریت میکنه.
در اون سمت پس از این که دریافت اطلاعات تموم شد میتونی اطلاعات رو در یه فایل ذخیره کنی.

samasara
09-10-2012, 00:41
برنامه ای که نوشتی واقعا قشنگ بود و ایول داری !!!!
می تونی با دستور Form1.Winsock1.LocalIP ای پی رو بگیری و قبل از ارسال فایل اول آی پی رو بفرستی !!! در سر سرور هم باید یک متغیر برای در یافت آی پی و یک دیگه برای ذخیره اون و آی پی دریافتی درست کنی .... حالا یک آدرس ذخیره شونده برای اون آی پی بزار و ادامه ی ماجرا... حالا اگر دوباره همون آی رو در یافت کردی داخل فولدر قبل ذخیره کن وگرنه در آدرس دیگه ای ذخیره رو انجام بده.. این جوری برای 2 کلایت مشکلت حل میشه اما برای کلایت ها بیشتر باید هر آی پی جدید رو داخل برای نامه با یک متغیر منحصر به فرد(شاید یک آرایه ی رشته ای) و یک آدرس جدید در نظر بگیری...

samasara
09-10-2012, 00:45
راستی یادم رفت بگم باید برنامه ای کلایت روی سستم های جدا باشه چون ای پی سیستم خودت همواره یکی خواهد بود .... پی برای حل این مشکل هم می تونی بجای آی پی یک نشانه به هر یک از برنامه های کلایت بدی مثلا برنامه ی کلایت 1 در ابتدا عبارت Cli1 رو به جا آی پ می فرسته... این جوری دیگه مشکلی پیش نمی یاد...

sosani2007
09-10-2012, 07:43
شما می تونی از API های آماده برای پیدا کردن ای پی استفاده کنی همچین کمپنتی وجود داره چون من خودم قبلا همچین برنامه ای رو نوشتم

kholous
09-10-2012, 21:06
دوستان از نظرات ارزشمندتون ممنونم . ولی هیچ کدوم از این راهها منطقی نیست.
من فعلاً مشکلم را حل کردم به این صورت که تعداد 30 تا Client و IP همه اونها را Static قرار دادم و داخل برنامه شرط گذاشتم که اگه فلان IP فایل ارسال کرد داخل یک Folder خاص ذخیره بشه .

اما اگه شما راه بهتری سراغ دارید ، باز م ممنون میشم کمکم کنید.

sosani2007
10-10-2012, 07:59
من همون نظر samasara رو تایید می کنم شما می تونی با استفاده از LocalIP ای پی طرف رو بدست بیاری اما برای امکانات بیشتر می تونی از یک API مربوط به ای پی استفاده کنی

samasara
11-10-2012, 10:39
دوستان از نظرات ارزشمندتون ممنونم . ولی هیچ کدوم از این راهها منطقی نیست.
من فعلاً مشکلم را حل کردم به این صورت که تعداد 30 تا Client و IP همه اونها را Static قرار دادم و داخل برنامه شرط گذاشتم که اگه فلان IP فایل ارسال کرد داخل یک Folder خاص ذخیره بشه .

اما اگه شما راه بهتری سراغ دارید ، باز م ممنون میشم کمکم کنید.

درکل روش همینه ولی باید به این هم فکر کنی که اگه برنامه هات بخوان روی شبکه ی جهانی(اینترنت نه شبکه ی محلی) کار کنند هر باری که کانتکت به اینترنت میشن یک آی پی جدید میگین!!!
منظور من از یک شناسه ی کلی مثلا یک متغیر با مقدار مشخص برای هر برنامهی سمت کاربر همین بود این جوری دیگه مشکل تغییر آی پی رو در ایترنت نداری .. البته اگر فقط داری از یک نت معمولی استفاده می کنی یا تمام سیستم هایی که برنامه ی کلای داری اونا هست از adsl استفاده می کنند دیگه مشکلی پیش نمی یاد و همان جوری که گفتی با تعریف استاتیک آی پی می شه انجام داد ..

sosani2007
11-10-2012, 17:40
درکل روش همینه ولی باید به این هم فکر کنی که اگه برنامه هات بخوان روی شبکه ی جهانی(اینترنت به شبکه ی محلی) کار کنند هر بار یه آی پی جدید داری!!!
منظور من از یک شناسه ی کلی مثلا یک متغیر با مقدار مشخص برای هر برنامهی سمت کاربر همین بود این جوری دیگه مشکل تغییر آی پی رو در ایترنت نداری .. البته اگر فقط داری از یک نت معمولی استفاده می کنی یا تمام سیستم هایی که برنامه ی کلای داری اونا هست از adsl استفاده می کنند دیگه مشکلی پیش نمی یاد ..

من هیچی از حرفات متوجه نشدم اگر امکان داره یکم .اضح توضیح بدید

Payman_62
13-10-2012, 13:26
سلام.
میتونستی به جای آیپی از اسم سیستم استفاده کنی که مجبور نشی آیپی هارو دستی بدی.

من نمیدونم هم زمان به همه کلاینت ها وصل میشی یا تک تک وصل میشه. چون این امکان وجود داره که از طریق آرایه ها هم زمان چند تا کانکشن برقرار کنی.

آیپی طرف رو هم با RemoteHost یا RemoteHostIP میتونی به دست بیاری و فولدر مورد نظرت رو ایجاد کنی.
LocalIP آیپی سیستم خودت هست.

sosani2007
14-10-2012, 09:24
یک کار دیگه هم میشه البته فکر نکنم شدنی باشه
برای هر کاربر یک یوزرنیم و پسورد تعریف کن در صورتی که یوزر نیم و پسورد درست بود نام کاربری+یوزرنیم طرف ذخیره شه جالب بود نه؟؟