none
TCP/IP Verbindung mit Windows CE 6.0 Gerät und .net Compact Framework RRS feed

  • Frage

  • Hallo Leute,
    ich bin neu auf diesem Forum und hoffe, dass mir geholfen wird. Hab schon im Internet gesucht und finde leider keine Lösung zu meinem Problem.
    Im Rahmen meiner Abschlussarbeit muss ich eine TCP/IP Kommunikation zw. meinem Rechner und einem WinCE Gerät aufbauen.
    So sieht das gerät aus: http://www.keith-koep.com/produkte/e...-wireless.html
    In der Verbindung muss das Board mal als Server mal als Client agieren. Als Client funktioniert es prima. Mit dem Server habe ich Schwierigkeiten. Mein Rechner kann einfach nicht mit dem kommunizieren:
    Hier die Codes, sind in C# geschrieben:
    Server:

    private void verbindeMitClient()
        {
    int port = 2000;
          try{
          Socket listeningSocket = new Socket(AddressFamily.InterNetwork,
              SocketType.Stream,
              ProtocolType.Tcp);
            IPAddress ipAddress = IPAddress.Parse(dottedServerIPAddress);
            IPEndPoint edp = new IPEndPoint(IPAddress.Any, port);
            Console.WriteLine("Listening for the client..."+edp.Address.ToString()+":"+edp.Port);
            listeningSocket.Bind(edp);
            listeningSocket.Listen(1);
            Socket communicationSocket = listeningSocket.Accept();   
              //wait infinitely to get a response
              byte[] inBuffer = new byte[1000];
              if (communicationSocket.Connected)
              {
                Console.WriteLine("Connected to client.");
                int count = communicationSocket.Receive(inBuffer);
              }
              else {
                Console.WriteLine("keine Verbindung möglich");
              }
              string message = new string(Encoding.UTF8.GetChars(inBuffer));
              Console.WriteLine("Received '" + message + "'.");
          
          }catch(SocketException se){
     
            Console.WriteLine("SocketException\n\n");
          }
     
          System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
          //throw new Exception("The method or operation is not implemented.");
        } 
    
    
    

    Client:

    namespace ComputerClient
    {
      class Program
      {
        private static string dottedServerIPAddress = "192.168.55.101";
        private static int port = 2000;
        static void Main(string[] args)
        {
          try {
            
          
          
          using (Socket clientSocket = new Socket(AddressFamily.InterNetwork,
              SocketType.Stream,
              ProtocolType.Tcp))
          {
            // Addressing
            IPAddress ipAddress = IPAddress.Parse(dottedServerIPAddress);
            IPEndPoint serverEndPoint = new IPEndPoint((ipAddress, port);
            // Connecting
            Console.WriteLine("Connecting to server " + serverEndPoint);
            try
            {
              clientSocket.Connect(serverEndPoint);
            }
            catch (SocketException se) { Console.WriteLine(se.ToString()); }
            if(clientSocket.Connected)
            Console.WriteLine("Connected to server.");
            else Console.WriteLine("Server konnte nicht erreicht werden.");
            // Sending
            byte[] messageBytes = Encoding.UTF8.GetBytes("Hello World!");
            clientSocket.Send(messageBytes);
            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
          }// the socket will be closed here
        }
        catch (System.Security.SecurityException se)
        {
          Console.WriteLine(se.StackTrace.ToString());
        }
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
        }
      } 
    
    
    

    Der Client(also mein Computer ) schafft das einfach nicht die IPAdresse des Boards zu finden. Wieso weiß ich nicht. Ich bekomme immer so einen Fehler:

    "SocketException was unhandled: A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied "

    Vielleicht werdet ihr schlauer daraus. Danke im Voraus

    Gruß, Florad

    Sonntag, 5. Dezember 2010 20:27

Antworten

  •         try {
              clientSocket.Connect(serverEndPoint);
            }
            catch (SocketException se) { Console.WriteLine(se.ToString()); }
            if(clientSocket.Connected)

    Florad, im Client: versuche anstelle dieser stets etwas fragwürdigen Nachprüfung auf .Connected  mal grob:

    try {
      clientSocket.Connect(serverEndPoint);
      byte[] messageBytes = Encoding.UTF8.GetBytes("Hello World!");
      clientSocket.Send(messageBytes);
    }
    catch (SocketException se) { Console.WriteLine(se.ToString()); }


    Falls trotzdem noch Exception, bitte Angabe auf welcher Zeile genau!

    PS:
    prüfe (nochmals) dass die IP "192.168.55.101" wirklich zur LAN-Schnittstelle deines Boards gehört (nicht etwa Wireless usw),
    und als Test auch mal ohne sonstige Verbindungen zum PC (zB USB/Debug/ActiveSync - Anschlüsse usw)
    Montag, 6. Dezember 2010 12:39
  • Die LAN-Schnittstelle hat auf dem Board nicht funktioniert...komisch. Aber ich habe mit Wlan probiert. Nach ein paar Schwierigkeiten am Anfang hat es doch funktionniert....Nochmal vielen Dank Thomas

    Gruß, Florad

    Mittwoch, 8. Dezember 2010 14:14

Alle Antworten

  • int count = communicationSocket.Receive(inBuffer);

    Hallo Florad

    kann diverse Ursachen haben, aber beginnen wir mit dem was in deinem Code mal schon auffällt:
    dein Server sollte das Receive solange wiederholen, bis 'count' = 0 wird.
      (also typische TCP-Empfangsschleife)
    Sonntag, 5. Dezember 2010 20:58
  • Danke für deine Antwort. Hab das im Programm geändert, trotzdem passiert gar nichts. Na ja ich werde einfach weiter suchen...

    Gruß, florad

    Montag, 6. Dezember 2010 12:04
  •         try {
              clientSocket.Connect(serverEndPoint);
            }
            catch (SocketException se) { Console.WriteLine(se.ToString()); }
            if(clientSocket.Connected)

    Florad, im Client: versuche anstelle dieser stets etwas fragwürdigen Nachprüfung auf .Connected  mal grob:

    try {
      clientSocket.Connect(serverEndPoint);
      byte[] messageBytes = Encoding.UTF8.GetBytes("Hello World!");
      clientSocket.Send(messageBytes);
    }
    catch (SocketException se) { Console.WriteLine(se.ToString()); }


    Falls trotzdem noch Exception, bitte Angabe auf welcher Zeile genau!

    PS:
    prüfe (nochmals) dass die IP "192.168.55.101" wirklich zur LAN-Schnittstelle deines Boards gehört (nicht etwa Wireless usw),
    und als Test auch mal ohne sonstige Verbindungen zum PC (zB USB/Debug/ActiveSync - Anschlüsse usw)
    Montag, 6. Dezember 2010 12:39
  • Ja das war die IP der USB-Schnittstelle. Ich probiere es mit einer richtigen LAN-Verbindung dann melde ich mich wieder. Danke für deine Hilfe

    Gruß, Florad

    Montag, 6. Dezember 2010 15:12
  • Die LAN-Schnittstelle hat auf dem Board nicht funktioniert...komisch. Aber ich habe mit Wlan probiert. Nach ein paar Schwierigkeiten am Anfang hat es doch funktionniert....Nochmal vielen Dank Thomas

    Gruß, Florad

    Mittwoch, 8. Dezember 2010 14:14