نمایش نتایج 1 تا 10 از 10

نام تاپیک: نحوه استفاده از سوکت

  1. #1

    نحوه استفاده از سوکت

    باسلام و عرض ادب
    بنده قصد ایجاد یک اپ ساده برای ارتباط به سرور و رد و بدل کردن اطلاعات دارم .

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

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

    باتشکر

  2.  

  3. #2
    کاربر دائمی آواتار hharddy
    تاریخ عضویت
    اسفند 1392
    محل زندگی
    تهران
    پست
    285

    نقل قول: نحوه استفاده از سوکت

    سلام
    ارتباط بین اپلیکیشن و سرور معمولا بصورت rest api هست که پیاده سازی اون در هاست اشتراکی هم مشکلی نداره اکثر مواقع مگر اینکه توابع ارتباط با دیتابیس و بسته باشه که غیر منطقیه.

    سوکت برقراری ارتباط در بستر شبکه بر اساس شماره پورت هست. وب سوکت معمولا نیاز به command line داره برای اجرا که هاست اشتراکی این قابلیت و نداره.

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

  4. #3
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    686

    نقل قول: نحوه استفاده از سوکت

    معمولا زمانی از سوکت پروگرمینگ استفاده میشه که حفظ اطلاعات در قسمت مشتری حائز اهمیت باشه مثل زمانیکه میخواهید یه سامانه رزرو بیلط یه قطار رو بنویسید فرض کنید که اگر بخواهید از وب سرویس های REST استفاده کنید یک ارتباط یکطرفه خواهید داشت و در مدت زمانی که شما در حال تصمیم به خرید یک صندلی هستید احتمالا یه کاربر دیگه زودتر اون رو سفارش میده پس عملا از وب سرویس نمی توان استفاده کرد معمولا برای اینکه بتوان ارتباط مشتری با سرور را پایدار کرد باید از سوکت استفاده کرد
    و مثالهای دیگه که خیلی کاربرد داره برنامه های چت و گفتگو ...
    به نظر من برای یادگیری خوب برنامه نویسی سوکت باید از برنامه نویسی C شروع کنید بعد مبینید که استفاده از اون در جاوا و یا سی پلاس پلاس چقدر راحت میشه البته نه اینکه اجباری باشه وگرنه در جاوا کلا یکسری کتابخانه برای این کار هستش ولی تکنیکهای خاص خودشو داره مثل برنامه نویسی موازی و همزمانی که در جاوا کتابخانه زیاد داره ولی تکنیکهاشو باید بلد باشید تا بتونید استفاده بهینه داشته باشید.
    بحث ارتباط با وب سرویس ها هم که دیگه کاملا مجزا هستش و بر روی پروتکل http استفاده میشه البته اغلبشون برای استفاده هم که کافی یه زبان شل اسکریپتی بلد باشید مثل پی اچ پی یا پایتون و اگر هم که دات نت کار باشید و علاقهمند به سرورهای ویندوزی صد البته که WCF ASP.NET بهترین گزینه برای نوشتن وب سرویس البته اینم بگم به نظر من پی اچ پی و مای اسکوئل خیلی سر راست و مطمئن هستش نوشتن وب سرویس هم خیلی کار سخت نیستش کافی اصول اولیه زبان بلد باشید تکنیکهای POST,GET هم بلد باشید بعد به راحتی میتونید یه وب سرویس برای خودتون بنویسید.
    دوستان هرکسی علاقمند بود بگه همینجا یا یه تاپیک دیگه براش ایجاد کنیم ..

  5. #4

    نقل قول: نحوه استفاده از سوکت

    معمولا زمانی از سوکت پروگرمینگ استفاده میشه که حفظ اطلاعات در قسمت مشتری حائز اهمیت باشه مثل زمانیکه میخواهید یه سامانه رزرو بیلط یه قطار رو بنویسید فرض کنید که اگر بخواهید از وب سرویس های REST استفاده کنید یک ارتباط یکطرفه خواهید داشت و در مدت زمانی که شما در حال تصمیم به خرید یک صندلی هستید احتمالا یه کاربر دیگه زودتر اون رو سفارش میده پس عملا از وب سرویس نمی توان استفاده کرد معمولا برای اینکه بتوان ارتباط مشتری با سرور را پایدار کرد باید از سوکت استفاده کرد
    در این رابطه بیشتر توضیح میدین؟ منظورتون این هست که race condition رخ میده؟ نمیشه هندلش کرد؟ و اینکه چرا نمیشه درخواست ها رو داخل صف استفاده کرد.

  6. #5
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    686

    Thumbs up نقل قول: نحوه استفاده از سوکت

    نقل قول نوشته شده توسط maarek مشاهده تاپیک
    در این رابطه بیشتر توضیح میدین؟ منظورتون این هست که race condition رخ میده؟ نمیشه هندلش کرد؟ و اینکه چرا نمیشه درخواست ها رو داخل صف استفاده کرد.
    تا اونجا که من میدونم race condition توی برنامه نویسی چند نخی زمانی اتفاق میوفته که چند نخ بخوان به یه دیتایی که Thread Safe نشده بخوان دسترسی پیدا کنن تقریبا شاید این اتفاق تو سوکت هم بیوفته اگر برنامه نویس از تکنیکهای Thread Safety استفاده نکرد باشه..!
    ولی اگر منظور شما اینه که می تونیم بدون سوکت فقط با برنامه نویسی Multi Threading می توان این عملیات رو پیاده سازی کرد بله کار که نشد نداره ولی! فکر کردید که چقدر درخواست بی مصرف رو باید برای سرور ارسال کنید فکر کردید چه بلایی سر پهنای باند میاد فکر کردید چه بلایی سر سرور تون میاد حالا اگر کاربرهاتون یک میلیون باشه چی بازهم با صف میتونین پردازش هارو انجام بدید میگید بله من هم میگم الگوریتم پردازش تون رو کاغذ بنویسید تعداد کاربرهای نهایی تون رو تو بدبینانه ترین حالت با تعداد ارسال و دریافت های درخواست ها و پروسه پردازش تون یه معادله ساده بنویسید ببنید چه زمان پردازش الگوریتمی بدست میارید..!!!
    یعنی در زمانی که شما دارید تصمیم میگیرید که سفارش انجام بدید کاربر دیگه ای اون رزرو میکنه یا یه مثل خیلی ملموس ترشم انتخاب واحد دانشگاه به صورت آنلاین هستش.
    فکر کنید در حال انتخاب واحد های درسی هستید احتمالا دیدید پروسه انتخاب واحد های درسی به صورت آنلاین باید سرعت العملی بالایی داشته باشید تا بتونید واحدهایی که میخواهید بگیرید حالا فکر کن سوکت و نخ ها نبودن چه اوضاعی میشد شما میرفتید واحدهاتون انتخاب میکردید کلی هم احتمالا واحدها رو بالا و پایین کردین همین که درخواستتون رو ارسال میکردید متوجه میشیدید که نصف واحد هاتون قابل دسترس نیست.

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

  7. #6
    کاربر دائمی آواتار roohola2434
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    هرمزگان
    پست
    115

    نقل قول: نحوه استفاده از سوکت

    پیشنهاد شما برای هاست چیه؟
    آیا راه حلی هست؟

  8. #7
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    686

    نقل قول: نحوه استفاده از سوکت

    برای هاست یعنی چی؟
    اگر برنامه ای دارید و میخواهید از طریق وب سرویس با اون ارتباط برقرار کنید که خوب API که تواین زمینه هست برای سمت اندروید مثل Volly , RetroFit استفاده کنید و اگر برای سمت سرور هم میخواهید البته اگر هاست شما ویندوزی ASP.NET , WCF و اگر هم که هاست شما لینوکسی که خوب PHP , MySql و اگر هم که میخواهید کراس باشه البته که پایتون استفاده کنید به راحتی هم میتونید کلی آموزش برای این سناریوها پیدا کنید و اگر هم که مشکلی بود همینجا مطرح کنید.
    و اگر هم که می خواهید از سوکت استفاده کنید که خوب برای شروع باید یک کلاس برای کلاینت تون سمت مشتری بنویسید با استفاد از کلاس Socket بنویسید یه چیزی شبیه کد زیر...

    public class Client {

    public static void main(String args[]) {


    try {
    // Create a socket
    Socket soc = new Socket(InetAddress.getLocalHost(), 8020);

    // Serialize today's date to a outputstream associated to the socket
    OutputStream o = soc.getOutputStream();
    ObjectOutput s = new ObjectOutputStream(o);

    s.writeObject("Today's date");
    s.writeObject(new Date());
    s.flush();
    s.close();
    } catch (Exception e) {
    System.out.println(e.getMessage());
    System.out.println("Error during serialization");
    System.exit(1);
    }
    }
    }

    وبرای سرور هم باید یه کلاس جداگانه داشته باشید مثل کد زیر...

    public class Server {

    /**
    * Create the serversocket and use its stream to receive serialized objects
    */
    public static void main(String args[]) {

    ServerSocket ser = null;
    Socket soc = null;
    String str = null;
    Date d = null;

    try {
    ser = new ServerSocket(8020);
    /*
    * This will wait for a connection to be made to this socket.
    */
    soc = ser.accept();
    InputStream o = soc.getInputStream();
    ObjectInput s = new ObjectInputStream(o);
    str = (String) s.readObject();
    d = (Date) s.readObject();
    s.close();

    // print out what we just received
    System.out.println(str);
    System.out.println(d);
    } catch (Exception e) {
    System.out.println(e.getMessage());
    System.out.println("Error during serialization");
    System.exit(1);
    }
    }
    }

  9. #8
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    686

    نقل قول: نحوه استفاده از سوکت

    برای هاست یعنی چی؟
    اگر برنامه ای دارید و میخواهید از طریق وب سرویس با اون ارتباط برقرار کنید که خوب API که تواین زمینه هست برای سمت اندروید مثل Volly , RetroFit استفاده کنید و اگر برای سمت سرور هم میخواهید البته اگر هاست شما ویندوزی ASP.NET , WCF و اگر هم که هاست شما لینوکسی که خوب PHP , MySql و اگر هم که میخواهید کراس باشه البته که پایتون استفاده کنید به راحتی هم میتونید کلی آموزش برای این سناریوها پیدا کنید و اگر هم که مشکلی بود همینجا مطرح کنید.
    و اگر هم که می خواهید از سوکت استفاده کنید که خوب برای شروع باید یک کلاس برای کلاینت تون سمت مشتری بنویسید با استفاد از کلاس Socket بنویسید یه چیزی شبیه کد زیر...

    public class Client {

    public static void main(String args[]) {


    try {
    // Create a socket
    Socket soc = new Socket(InetAddress.getLocalHost(), 8020);

    // Serialize today's date to a outputstream associated to the socket
    OutputStream o = soc.getOutputStream();
    ObjectOutput s = new ObjectOutputStream(o);

    s.writeObject("Today's date");
    s.writeObject(new Date());
    s.flush();
    s.close();
    } catch (Exception e) {
    System.out.println(e.getMessage());
    System.out.println("Error during serialization");
    System.exit(1);
    }
    }
    }

    وبرای سرور هم باید یه کلاس جداگانه داشته باشید مثل کد زیر...

    public class Server {

    /**
    * Create the serversocket and use its stream to receive serialized objects
    */
    public static void main(String args[]) {

    ServerSocket ser = null;
    Socket soc = null;
    String str = null;
    Date d = null;

    try {
    ser = new ServerSocket(8020);
    /*
    * This will wait for a connection to be made to this socket.
    */
    soc = ser.accept();
    InputStream o = soc.getInputStream();
    ObjectInput s = new ObjectInputStream(o);
    str = (String) s.readObject();
    d = (Date) s.readObject();
    s.close();

    // print out what we just received
    System.out.println(str);
    System.out.println(d);
    } catch (Exception e) {
    System.out.println(e.getMessage());
    System.out.println("Error during serialization");
    System.exit(1);
    }
    }
    }

    برای سرور سوکت هم میتونید روی هاست ایجاد کنید البته روی هاست ها رایگان که بعید میدونم برای هاست های خریداری شده هم میتونید با PHP سرور سوکت بسازید البته اگر هاست لینوکسی داشته باشید و اگرهم که ویندوزی باشه بهتره از خود جاوا و فریم ورک های J2EE استفاده کنید در کل برای اینکه بتونید از طریق TCP/IP ارتباط داشته باشید با کلاینت تون باید سرور یا هاست تون اجازه داشته باشید برخی اوقات پروتکل های امنیتی سرورهای مجازی که اغلب میزبان هاست های اشتراکی هستند این اجازه رو نمیدن.
    آخرین ویرایش به وسیله farhad_shiri_ex : جمعه 31 فروردین 1397 در 15:09 عصر

  10. #9

    نقل قول: نحوه استفاده از سوکت

    برای برنامه نویسی سوکت یا بیان دیگه برنامه های real-time باید یک ارتباط دو طرفه از نوع TCP ایجاد کنید، برای اینکار معمولا کلاینت آغار کننده ارتباط هستش و به یک IP static و یک port متصل میشه، تو این سناریو IP static ما همون سرور هستش، اون چیزی که در ارتباط از نوع سوکت مهم هستش مدریت کردن سوکت ها در تعداد بالا و همزمان سمت سرور هستش، که نیاز به دانش Multi Tasking بودن برنامه سمت سرور داره، برای اینکار کتبخونه های زیادی نوشته شده مثل Node.js ، Socket.io و اگر برنامه نویس سمت سرور .net هستید signalR رو بهتون پیشنهاد میدم، تمام این کتابخونه ها که نام بردم از websocket برای ارتباط کلاینت و سرور در اولویت استفاده میکنن، البته signalR از 3 روش دیگه مثل Long polling و دو روش دیگه در صورت نبود بستر websocket استفاده میکنه، برای نمونه کدها چه کلاینت که اندروید باشه و چه سرور با هر زبانی سرچ کنید میتونید نمونه کدهای خوبی پیدا کنید.

  11. #10

    نقل قول: نحوه استفاده از سوکت

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    برای هاست یعنی چی؟
    درود
    سوال داشتم ازتون
    من سرور مجازی لینوکس دارم کنترل پنل دایرکت ادمین
    اشنایی با PHP و MYSQL و HTML و جاوا به صورت مختصر دارم و و کدهاشون قابل فهمه برام
    اما تو اندروید من چیزی بلد نیستم یعنی سوالم اینه چندین سورس برنامه چت اندروید دارم هر چی کدهاش میگردم اصلا متوجه نمیشم این چجوری به پایگاه داده MYSQL وصل میشه تا اطلاعات رد بدل بشه
    میخاستم برای یادگیری یکی از این برنامه هارو وصل کنم اما بلد نیستم
    میشه در این خصوص راهنمایی کنین

تاپیک های مشابه

  1. نحوه استفاده از Crystal Report
    نوشته شده توسط Erfanian در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: دوشنبه 06 شهریور 1385, 00:18 صبح
  2. نحوه استفاده از checkbox بجای ستون select
    نوشته شده توسط داش اکل در بخش ASP.NET Web Forms
    پاسخ: 16
    آخرین پست: یک شنبه 29 شهریور 1383, 13:48 عصر
  3. نحوه استفاده از Sql Server
    نوشته شده توسط rezaTavak در بخش SQL Server
    پاسخ: 1
    آخرین پست: سه شنبه 25 فروردین 1383, 20:23 عصر
  4. بسیار ضروری (نحوه استفاده از کلکسیون فرم )
    نوشته شده توسط sarina در بخش VB.NET
    پاسخ: 1
    آخرین پست: یک شنبه 11 آبان 1382, 23:00 عصر
  5. نحوه استفاده از seek
    نوشته شده توسط morteza_dehghan در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 5
    آخرین پست: پنج شنبه 02 مرداد 1382, 15:12 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •