Client Server auf einem Motorola Milestone

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von asimov1981, 24.02.2010.

  1. asimov1981, 24.02.2010 #1
    asimov1981

    asimov1981 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    24.02.2010
    Hallo ich entwickle gerade für ein Motorola Droid eine kleine client Server App. Leider finde ich irgendwie nicht den letzten Fehler, der verhindert das mein Client und mein Server miteinander reden. Ich wollte eigentlich TCP Sockets verwenden. Welche IP und welchen Port muß ich eigentlich nutzen wenn Server und Client über USB verbunden sind?
    Server Code:
    PHP:
    package ServerforSocket;

    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;


    public class 
    ServerforSocket {

        
    /**
         * @param args
         */
           
    public static void main(String args[]) {
                  
    String data "Hallo ich bin ein socket Test";
                  try {
                      
    System.out.print("Try");
                          
                     
    ServerSocket srvr = new ServerSocket(1234);
                     
    Socket skt srvr.accept();
                     
    System.out.print("Server has connected!\n");
                     
    PrintWriter out = new PrintWriter(skt.getOutputStream(), true);
                     
    System.out.print("Try2");
                     
    out.print(data);
                     
    out.close();
                     
    skt.close();
                     
    srvr.close();
                  }
                  catch(
    Exception e) {
                     
    System.out.print("Whoops! It didn't work!\n");
                  }
               }
    }

    Und hier für den client (Motorola Milestone)

    PHP:
    package com.example.clientAndroid;

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.Socket;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class 
    SocketAndroid extends Activity {
        
    /** Called when the activity is first created. */
        
    @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            
    setContentView(R.layout.main);
            
            final 
    Button button = (ButtonfindViewById(R.id.ok);
            final 
    EditText entry = (EditTextfindViewById(R.id.entry);
            
            
    button.setOnClickListener(new View.OnClickListener() {
                public 
    void onClick(View v) {
               
                    
    // übergebe IP Adresse
                    
    testSocket ((CharSequenceentry.getText());
                    
                }
            });

          
            
        }
        
        public 
    void testSocket (CharSequence ipNumber){
            try{
                
    Toast.makeText(SocketAndroid.this"Try to connect to Server " +ipNumberToast.LENGTH_SHORT).show();
                 
    Socket skt = new Socket((String)ipNumber,1234);
                 
    BufferedReader input = new BufferedReader(new InputStreamReader(skt.getInputStream()));
                 
    Toast.makeText(SocketAndroid.this, (CharSequenceinputToast.LENGTH_SHORT).show();
            }
            catch(
    Exception e){
                
    Toast.makeText(SocketAndroid.this"Keine Connection zum Server möglich"Toast.LENGTH_SHORT).show();
                    
            }
        }
        
    }
     
  2. ko5tik, 24.02.2010 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Der Portnummer ist egal (Hauptsache en beiden Seiten gleich). Dein Server sollte die Portnummer >1024 verwenden ( Wir sinf ja unter linux, und deine Anwendung hat sichelich keine Root-Rechte). Art von Kabelverbindung ist eigenlich dabei egal.

    Und zum Problemklärung würden die Stacktraces von Exceptions sicherlich gut beitragen (falls es welche gibt)

    Grüß,
     
  3. asimov1981, 25.02.2010 #3
    asimov1981

    asimov1981 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    24.02.2010
    Ok also das läuft schonmal nicht. Gibt es nen Portscanner oder ähnliches?
    Von Windowsaus müßte der Port eigentlich offen sein, jedenfalls ist eine entsprechende Exception in der Firewall. Welche IP Nummer sollte man verwenden?
    Ist an meinem Code irgendwas falsch?
     
    Zuletzt bearbeitet: 25.02.2010
  4. ko5tik, 25.02.2010 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Wie baust du die Netzwerk auf?

    Es kann sehr gut sein, das deine Windows-Kiste von draussen nicht erreichbar ist.
     
  5. asimov1981, 25.02.2010 #5
    asimov1981

    asimov1981 Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    24.02.2010
    Naja ich habe den Port in der Firewall geöffnet. Technische gesehen sollten sowohl Smartphone als auch Handy im selben Netzwerk (uni-Netzwerk) sein. Die Windowsmaschine kann auch den Droiden anpingen. Eine Art Pingfunktion fürs Android gibts nicht zufällig?
     
  6. ko5tik, 25.02.2010 #6
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Mu du im Appstore gucken. Zumindest SSH-Klienten gab es dort - also ping wäre auf alle fälle drin.
     
  7. Scogit, 25.02.2010 #7
    Scogit

    Scogit Android-Hilfe.de Mitglied

    Beiträge:
    69
    Erhaltene Danke:
    2
    Registriert seit:
    16.08.2009
    Phone:
    Samsung Galaxy
    Probiere mal folgendes:

    Code:
    _mSocket = new Socket();
    _mSocket.connect(new InetSocketAddress(host, port), _mTimeout);
    
     

Diese Seite empfehlen