none
Обмен данными между Windows XP и Windows Mobile через интернет RRS feed

  • Вопрос

  • Подскажите как реализовать обмен данными между Windows XP и Windows Mobile через интернет средствами C#? Заранее благогарен.
    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:11 MSDN Forums Consolidation (От:Технологии .NET Framework: ADO.NET, WCF, WPF etc)
    15 апреля 2010 г. 19:11

Ответы

Все ответы

  • Посмотрите реализацию на WCF http://www.codeproject.com/KB/WCF/netcfwcf.aspx

     

    Так же можно

    На стационарном компьютере запускаем приложение для обмена данными слушающее какой нибудь порт с помощьюHttpListener

    Ну а со смарт устройства стучимся на сервер с помощью HttpWebRequest

    Стационарный компьютер обрабатывает запрос заносит в ответ необходимые данные и отсылает ответ смарт устройству

    + Сетевое программирование в .NET Compact Framework


    • Предложено в качестве ответа Megano 15 апреля 2010 г. 20:00
    • Помечено в качестве ответа skilk 16 апреля 2010 г. 18:24
    15 апреля 2010 г. 19:59
  • Спасибо за помощь, возникла следующая проблема.

    Создал клиент и сервер (оба под Win XP, пока), по локальной сети работает, по инету не хочет, вываливает ошибка 502(плохой шлюз) подскажите в чём может быть проблема?,

     

    // Server

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;

    namespace Server
    {
      public partial class Form1 : Form
      {
      public Form1()
      {
      InitializeComponent();
      }

      public HttpListener server = new HttpListener();
      
      private void button1_Click(object sender, EventArgs e)
      {
      
      server.Prefixes.Add("http://*:1001/");

      textBox1.Text += "Start";

      server.Start();

      HttpListenerContext context = server.GetContext();
      HttpListenerRequest request = context.Request;

      HttpListenerResponse response = context.Response;

      string responseString = "Testing Testing Testing";
      byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
      
      response.ContentLength64 = buffer.Length;
      System.IO.Stream output = response.OutputStream;
      output.Write(buffer, 0, buffer.Length);
      
      output.Close();
      server.Stop();
      textBox1.Text += "It`s Work";
      }
      }
    }


    //Client

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;

    namespace Clien
    {
      public partial class Form1 : Form
      {
      public Form1()
      {
      InitializeComponent();
      }


      private void button1_Click(object sender, EventArgs e)
      {

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://adress:1001/"); //тут указываю нужный адрес
      
      request.MaximumAutomaticRedirections = 4;
      request.MaximumResponseHeadersLength = 4;
      
      request.Credentials = CredentialCache.DefaultCredentials;
      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
      
      textBox1.Text += ("Content length " + response.ContentLength.ToString());
      textBox1.Text += ("Content type " + response.ContentType.ToString());

      
      Stream receiveStream = response.GetResponseStream();

      
      StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

      textBox1.Text += ("Response stream received.");
      textBox1.Text += (readStream.ReadToEnd());
      response.Close();
      readStream.Close();
      }
      }
    }

     

    16 апреля 2010 г. 16:36
  • Как я понимаю вы пытаетсь соединится физически находясь в одной локальной сети но по внешниму ip адресу и скажем с переброской портов на роутере? У меня возникали проблемы подобного плана, попробуйте из другой сети.
    16 апреля 2010 г. 17:09
  • Прбовал на двух компах, каждый с мтс модемом, также пробовал в разных сетях, не получается.

    16 апреля 2010 г. 17:38
  • Попробуйте удалить лимиты

     

      request.MaximumAutomaticRedirections = 4;
      request.MaximumResponseHeadersLength = 4;
    

    Отключить фаервол

    Проверьте доступен ли сервер через интернет

    • Помечено в качестве ответа skilk 16 апреля 2010 г. 18:24
    16 апреля 2010 г. 17:56
  • Спасибо, заработало ))).

    Подскажите, где почитать как с клиента передавать, а сервером принимать и читать xml файл.

    16 апреля 2010 г. 18:26
  • Попробуйте использовать Stream запроса
    16 апреля 2010 г. 19:23
  • Попробуйте использовать Stream запроса

    а можно поподробней, что то не найду как это реализовать.
    17 апреля 2010 г. 17:27
  • Исходя из вашего вышеуказанного кода.

    Клиент:

          HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:1001/"); 
          request.Credentials = CredentialCache.DefaultCredentials;
          request.Method = "POST";
    
          Stream reqStr = request.GetRequestStream();//в этот поток кладем xml 
          string responseString = "some data";
          byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
          reqStr.Write(buffer, 0, buffer.Length);
          reqStr.Close();
          
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
          Stream receiveStream = response.GetResponseStream();
          StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
          textBox1.Text += ("Response stream received. ");
          textBox1.Text += (readStream.ReadToEnd());
          response.Close();
          readStream.Close();

    Сервер:

          server.Prefixes.Add("http://*:1001/");
          server.Start();
    
          HttpListenerContext context = server.GetContext();
          
          StreamReader reqStream = new StreamReader(context.Request.InputStream);
          textBox1.Text = reqStream.ReadToEnd();
          reqStream.Close();
          
          HttpListenerResponse response = context.Response;
    
          string responseString = "Testing Testing Testing";
          byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    
          response.ContentLength64 = buffer.Length;
          System.IO.Stream output = response.OutputStream;
          output.Write(buffer, 0, buffer.Length);
    
          output.Close();
          server.Stop();
          textBox1.Text += "It`s Work";

    18 апреля 2010 г. 17:20
  • skilk пытайтесь создавать вновь возникшие вопросы, в новых топиках.
    Для связи [Mail]
    21 апреля 2010 г. 7:03