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

نام تاپیک: ارتباط بین موبایل و کامپیوتر از طریق WiFi

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    قزوین
    پست
    158

    Question ارتباط بین موبایل و کامپیوتر از طریق WiFi

    سلام
    من مدت زیادی نیست که وارد دنیای برنامه نویسی آندروید شدم و هر چی هم یاد گرفتم به لطف زحمات آقای کمالان در وب سایت خوبشون بوده.
    اخیرا برای پروژه ای لازم شده یه برنامه آندروید بنویسیم که از طریق شبکه محلی بیسیم بین موبایل و یه کامپیوتر اطلاعاتی رد و بدل بشه. توی اینترنت گشتم و کدی شبیه زیر پیدا کردم و برنامه ام رو نوشتم که بی خطا بود و روی گوشی نصب هم شد. توی ایمولاتور که اجرا می کردم دیدم با زدن یکی از دکمه ها هنگ می کنه و بعد پیغام میاد که می خوای منتظر بمونی یا ببندیش؟ گفتم شاید چون ایمولاتور WiFi نداره این جوری می شه اما روی گوشی واقعی هم وضع همین بود (یه برنامه ویندوز هم نوشتم با سی شارپ که قراره چیزی رو که این برنامه می فرسته بگیره). بازم سرچ کردم دیدم ظاهرا این مشکل خیلی ها هست اما راه حل درست براش پیدا نکردم. مطمئنم راه حل داره چون application هایی هست که دقیقا با همین سیستم کار می کنن، فقط من نمی دونم مشکل از کد منه یا تنظیمات خاصی توی مودم (مودم ADSL بیسیم که به تصور من باید بتونه کار روتر رو انجام بده) باید انجام بدم؟
    فقط متدی رو گذاشتم که کار ایجاد سوکت و ارسال رو به عهده داره. موقع اجرا روی گوشی متوجه شدم که اجرای برنامه وارد اولین Catch این متد شده.


    private void sendCommand(String message)
    {

    DataOutputStream OutputStrm = null;
    Socket socket=null;
    try {
    socket = new Socket("192.168.1.20", 8080);
    OutputStrm = new DataOutputStream(socket.getOutputStream());

    OutputStrm.writeUTF(message);

    } catch (IOException e1)
    {
    e1.printStackTrace();

    }finally
    {
    if (socket != null)
    {
    try
    {
    socket.close();
    } catch (IOException e)
    {

    e.printStackTrace();
    }
    }
    if (OutputStrm != null){
    try {
    OutputStrm.close();
    } catch (IOException e) {

    e.printStackTrace();
    }
    }
    }//finally

    }//method


  2. #2

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    سلام،
    اول اینکه پیشنهاد می کنم اگر می خواهید داده بین دو دستگاه منتقل کنید از web service استفاده کنید که البته پیشنهاد می شه اگر security اهمیت خاصی نداره از REST استفاده کنید. دوم اینکه لطفا خطایی که دریافت می کنید را و یا برنامه C#‎ رو هم بزارید که بشه مشکل رو بررسی کرد.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    قزوین
    پست
    158

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    سلام
    ممنون از پاسختون. این وب سرویس به نظرم ایده خوبیه. خودم سرچ می کنم اما اگه نمونه ای می شناسید ممنون می شم لینکشو بفرستید
    امنیت اهمینتی نداره اما REST چی هست؟ نشنیده بودم
    خطا فقط همونه که عرض کردم، برنامه آندروید یه مدت هنگ می کنه و بعدش پیغام میاد که می خوای بیشتر صبر کنی یا اینو ببندی چون داره خیلی طول می ده. توی برنامه سی شارپ هم Break point گذاشتم اما هیچ وقت به اونجا نرسید. بعدا سعی کردم از کامپیوتر آی پی گوشی رو ping کنم که دیدم اصلا دسترسی بهش نیست و Destination unreachable می ده.

    در هر صورت اینم کد سی شارپ:


    class clApplicationContext : ApplicationContext
    {
    private TcpListener tcpListener;
    private Thread listenThread;
    Form1 lampsForm;
    private string _data;
    string ReceivedData
    {
    get
    {
    return _data;
    }
    set
    {
    _data = value;
    if (value.ToLower() == "first")
    {
    lampsForm.toggleFirst();
    }
    else
    {
    lampsForm.toggleSec();
    }
    }
    }
    public clApplicationContext()
    {
    lampsForm = new Form1();

    this.tcpListener = new TcpListener(IPAddress.Any, 8080);
    this.listenThread = new Thread(new ThreadStart(ListenForClients));
    this.listenThread.Start();
    }

    private void ListenForClients()
    {
    this.tcpListener.Start();

    while (true)
    {
    //blocks until a client has connected to the server
    TcpClient client = this.tcpListener.AcceptTcpClient();

    //create a thread to handle communication
    //with connected client
    Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
    clientThread.Start(client);
    }
    }

    private void HandleClientComm(object client)
    {
    TcpClient tcpClient = (TcpClient)client;
    NetworkStream clientStream = tcpClient.GetStream();

    byte[] message = new byte[4096];
    int bytesRead;

    while (true)
    {
    bytesRead = 0;

    try
    {
    //blocks until a client sends a message
    bytesRead = clientStream.Read(message, 0, 4096);
    }
    catch
    {
    //a socket error has occured
    break;
    }

    if (bytesRead == 0)
    {
    //the client has disconnected from the server
    break;
    }

    //message has successfully been received
    ASCIIEncoding encoder = new ASCIIEncoding();
    ReceivedData = encoder.GetString(message, 0, bytesRead);
    //System.Diagnostics.Debug.WriteLine(received);

    }

    tcpClient.Close();
    }
    }

  4. #4
    کاربر دائمی آواتار dehghanimeh
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    119

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

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

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    قزوین
    پست
    158

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    نقل قول نوشته شده توسط dehghanimeh مشاهده تاپیک
    با سلام
    اول اینکه برنامه اندرویید شما سطح دسترسی شبکه برای اون تعریف شده؟
    اگر شما نتونید از طریق کامپیوتر موبایل رو پینگ کنید مودم شما امکان روتر نداره و باید دنبال اکسس پوبنت باشید
    موفق باشید
    به نظرم برای اجازه استفاده از شبکه این خطوط در مانیفست لازم بود که اضافه کردم:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_ST ATE"/>


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

  6. #6
    کاربر دائمی آواتار dehghanimeh
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    119

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    با سلام
    من در مورد فایر وال اطلاع زیادی ندارم . ایده وب سرویس برای وقتی خوبه که شما کامل بخوای روی اینترنت کار کنی و اینو به خاطر داشته باش در وب سرویس همیشه client یا همان موبایل باید شروع کننده ارتباط باشه و یک سری اطلاعات به وب سرویس ارسال کنه تا پاسخ اون دریافت بشه یعنی ارتباط یه جورایی یک طرفه است . ولی در برنامه نویسی سوکت(مثال خودتون) ارتباط میتونه کامل دو طرفه باشه مثلا کامپیوتر در یک وضعیت خاص به پورت برنامه موبایل وصل بشه و اطلاعات را به برنامه موبایل ارسال کنه.
    موفق باشید

  7. #7
    کاربر دائمی آواتار dehghanimeh
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    119

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    پست تکراری

  8. #8

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    سلام دوستان من یه مدت دارم روی همین موضوع کار میکنم ،
    بنظرتون اگر با Asp یه پیج درست کرد و اون رو با web servis روی یه ip خاص گذاشت بعد توی محیط eclips فقط یه web browser بسازیم راحتر نیست ؟
    من واقعا با این موضوع درگیرم ، مرسی از توجهتون...

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    قزوین
    پست
    158

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    دوست عزیز dehghanimeh، نیاز ما با همین حالت که همیشه موبایل شروع کننده باشه رفع می شد به همین خاطر این کار رو کردم. اما این که این بحث رو دارم ادامه می دم به این خاطره که ممکنه بعدا بخواهیم وجود یه کامپیوتر رو توی محیط که عرض کردم نقش وب سرور رو اجرا می کرد (البته توجه کنید که این یه وب سرور در شبکه محلیه و نه اینترنت) حذف کنیم. اون وقت احتمالا به برنامه نویسی سوکت نیاز پیدا می کنیم.

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

    دوست عزیز hosein_hgh، شما اگه پست ها رو مطالعه کنید متوجه می شید که من دقیقا همین ایده شما رو پیاده کردم و شده! حتی نیازی نیست یه مرورگر برای گوشی بسازید، می تونید از مرورگر خود گوشی استفاده کنید. موفق باشید

  10. #10

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi


  11. #11

    نقل قول: ارتباط بین موبایل و کامپیوتر از طریق WiFi

    سلام
    تا حالا کسی تونسته از طریق برنامه نویسی #c از کامپیوتر به موبایلو برعکس از طریق WIFI اطلاعات بده.
    اگه کسی موفق شده یا اطلاعاتی داره ممنون میشم کمکم کنه.

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

  1. ارتباط موبایل و کامپیوتر از طریق بلوتوث
    نوشته شده توسط alireza323 در بخش برنامه نویسی موبایل
    پاسخ: 0
    آخرین پست: سه شنبه 07 اردیبهشت 1389, 17:46 عصر
  2. سوال: ارتباط موبایل و کامپیوتر از طریق بلوتوث
    نوشته شده توسط alireza323 در بخش Java ME : نگارش میکرو جاوا
    پاسخ: 1
    آخرین پست: چهارشنبه 01 اردیبهشت 1389, 01:15 صبح
  3. ارتباط گوشی موبایل با کامپیوتر از طریق بلوتوث
    نوشته شده توسط حبیب در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 08 اردیبهشت 1386, 15:47 عصر
  4. ارتباط بین دو کامپیوتر از طریق سریال پورت
    نوشته شده توسط habdolah در بخش شبکه و Networking‌
    پاسخ: 7
    آخرین پست: دوشنبه 18 اسفند 1382, 08:54 صبح

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

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