2016-08-04 15 views
-4

Ich bin ein Anfänger in Android-Programmierung und ich möchte um Ihre Hilfe in Android-Studio zu fragen .. Ich muss eine Anwendung, die Client-Server-basierten Chat mit einem lokalen ist area network .. wie kann ich diese app bauen und was könnte der einfachste weg es zu tun ..Einfache TCP/IP-Chat mit Sockets auf Android Studio

+0

Sieht so aus, als ob Sie am besten nach Tutorials suchen.Sie stellen keine spezifische Frage, die jemand beantworten kann. – CindyH

+0

Sie können die Arbeit von Opensource-Projekt starten. [FireChat] (https://firechat.firebaseapp.com/) – suiwenfeng

+0

Erstellen Sie einen Chat-Server und erstellen Sie eine verpackte App-Basis darauf. – suiwenfeng

Antwort

1

Ich werde dir nicht sagen, wie das zu programmieren, weil das für Sie herauszufinden ist, aber ich werde sagen Sie, was Sie tun müssen.

Zuerst müssen Sie den Server erstellen. Sie würden dies mit Java tun, indem Sie einen TCP-Socket auf dem Port 946 oder einem anderen Socket öffnen, der nicht bereits an den Benutzer gebunden ist. Dann müssen Sie einen Paket-Handler erstellen, der die Nachrichtenpakete verarbeitet, die vom Client gesendet werden.

Jetzt für die Client-Seite müssen Sie einen Socket für den Client erstellen und diesen Socket mit dem Remote-Host verbinden. Jetzt werden Sie Ihre Nachrichtenpakete erstellen und sie über diesen neu erstellten Socket an den Remote-Host senden und der Server wird die Pakete behandeln, wie Sie es codiert haben.

0

Hier ist ein Beispielcode, um loszulegen.

Auf der Server-Seite

Ich glaube, Sie wissen, wie die Android-Benutzeroberfläche mit dem XML-Layout zu erstellen. Fügen Sie im XML-Layout eine Schaltfläche, ein listView, mit IDs hinzu. Der Button onclicked startet den Server und hält ihn geöffnet, um Nachrichten vom Client zu empfangen.

Auf der MainActivity, nach dem Erstellen einer Instanz der beiden, Button und ListView, finden Sie dort Ids mit der findViewById. Setzen Sie die Liste auf einen von Ihnen erstellten Adapter.

ArrayAdapter<String> myAdapter = new ArrayAdapter<>(MainActivity.this, R.layout.list_items, list); 
listView.setAdapter(myAdapter); 

und auf Schaltfläche geklickt rufen Sie die Methode unten auf.

, um den Server zu starten und ihn mit der while-Schleife geöffnet zu halten, damit Daten vom Client empfangen werden können. Fügen Sie diese Methode nun hinzu, um den UI-Thread zu aktualisieren.

Handler myHandler = new Handler(){ 
    @Override 
    public void handleMessage(Message status){ 
     String myMessage = status.obj.toString(); 
     list.add(myMessage); 
    } 
}; 

Auf der Client-Seite

Im xml eine EditText hinzufügen und eine Sendetaste Daten an den Server zu senden.

In der mainActivity, nach dem Erstellen von Instanzen des editText und Button, und finden Sie ihre IDs mit der findViewById.

editText =(EditText)findViewById(R.id.editText); 
    send = (Button)findViewById(R.id.send); 

Klicken Sie auf den Senden-Button, um dies zu tun.

send.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myString = editText.getText().toString(); 
      sendData(); 
     } 
    }); 

Unten ist die Methode sendData().

public void sendData(){ 
    Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       Socket socket = new Socket("127.0.0.1", 6000); 
       ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); 
       oos.writeObject(myString); 
       oos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    thread.start(); 
} 

Führen Sie die beiden Projekte auf der gleichen Android-Gerät oder Emulator. Ich denke, das sollte dir den Anfang machen.