English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieser Artikel beschreibt ein einfaches C-Beispiel für Android basierend auf Socket./SChat-Kommunikationsfunktion. Hiermit geteilt, um zur Referenz, wie folgt:
Hauptidee: Eine Nachricht wird auf dem Client gesendet, im Hintergrund wird ein Thread als Server eingerichtet, der sofort eine Antwort an den Client sendet, wenn eine Nachricht empfangen wird.
Schritt 1: Erstellen Sie eine Klasse SocketClientActity, die Activity fortsetzt, im Paket com.pku.net
Die Layout-Datei socketclient.xml wird erstellt, der Code ist wie folgt:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ScrollView android:id="@"+id/scrollview3" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@"+id/chattxt2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#"98F5FF" />}} </ScrollView> <EditText android:id="@"+id/chattxt" android:layout_width="fill_parent" android:layout_height="wrap_content" />}} <Button android:id="@"+id/chatOk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Senden" > </Button> </LinearLayout>
Hier wird die Datei SocketClientActity.Java erstellt:
package com.pku.net; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.net.UnknownHostException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.*; public class SocketClientActivity extends Activity { SocketServerThread yaochatserver; /** Wird aufgerufen, wenn die Aktivität zum ersten Mal erstellt wird. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.socketclient); try { yaochatserver = new SocketServerThread(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (yaochatserver != null) { yaochatserver.start(); } findviews(); setonclick(); } private EditText chattxt; private TextView chattxt2; private Button chatok; public void findviews() { chattxt = (EditText) this.findViewById(R.id.chattxt); chattxt2 = (TextView) this.findViewById(R.id.chattxt2); chatok = (Button) this.findViewById(R.id.chatOk); } private void setonclick() { chatok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { connecttoserver(chattxt.getText().toString()); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } public void connecttoserver(String socketData) throws UnknownHostException, IOException { Socket socket = RequestSocket("127.0.0.1", 5000); SendMsg(socket, socketData); String txt = ReceiveMsg(socket); this.chattxt2.setText(txt); } private Socket RequestSocket(String host, int port) throws UnknownHostException, IOException { Socket socket = new Socket(host, port); return socket; } private void SendMsg(Socket socket, String msg) throws IOException { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); writer.write(msg.replace("\n", " ") + "\n"); writer.flush(); } private String ReceiveMsg(Socket socket) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); String txt = reader.readLine(); return txt; } }
Schreiben Sie die Datei AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pku.net" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" />}} <uses-permission android:name="android.permission.INTERNET"/>}} <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".HttpURLActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN"> />}} <category android:name="android.intent.category.LAUNCHER"> />}} </intent-filter> </activity> <activity android:name="GetNetImage"></activity> <activity android:name="HttpClientActivity"></activity> <activity android:name="SocketClientActivity"></activity> </application> </manifest>
Schreiben Sie zuletzt die Datei SocketServerThread.java für den Hintergrundserver, der Code ist wie folgt:
package com.pku.net; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class SocketServerThread extends Thread { public SocketServerThread() throws IOException { CreateSocket(); // Erstellen Sie einen Socket-Server } public void run() { Socket client; String txt; try { while (true) // Eine Thread-Schleife ohne Ende, die Socket-Port ständig überwacht { client = ResponseSocket(); // Antworten Sie auf die Verbindungsanfrage des Clients... while (true) { txt = ReceiveMsg(client); System.out.println(txt); // Die Verbindung hat eine Nachricht vom Client erhalten und diese auf dem Bildschirm des Servers angezeigt SendMsg(client, txt); // Senden Sie eine Nachricht an den Client zurück if (true) break; // Abbruch, warten Sie weiter auf eine Verbindungsanfrage } CloseSocket(client); // Schließen Sie diese Verbindung } } catch (IOException e) { System.out.println(e); } } private ServerSocket server = null; private static final int PORT = 5000; private BufferedWriter writer; private BufferedReader reader; private void CreateSocket() throws IOException { server = new ServerSocket(PORT, 100); System.out.println("Server startet..."); } private Socket ResponseSocket() throws IOException { Socket client = server.accept(); System.out.println("Client verbunden..."); return client; } private void CloseSocket(Socket socket) throws IOException { reader.close(); writer.close(); socket.close(); System.out.println("Client geschlossen..."); } private void SendMsg(Socket socket, String Msg) throws IOException { writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); writer.write(Msg + "\n"); writer.flush(); } private String ReceiveMsg(Socket socket) throws IOException { reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); System.out.println("Server erhält Eingabe vom Client-Socket..."); String txt = "Server send:" + reader.readLine(); return txt; } /* public static void main(final String args[]) throws IOException { SocketServerThread yaochatserver = new SocketServerThread(); if (yaochatserver != null) { yaochatserver.start(); } } */ }
Das Laufzeitergebnis ist wie folgt dargestellt:
Interessierte Leser, die mehr über Android-Inhalte erfahren möchten, können die Themen der Website besuchen: "Zusammenfassung der Android-Kommunikationsmethoden", "Einführung und Fortschrittstutorial für Android-Entwicklung", "Zusammenfassung von Debugging-Techniken und häufigsten Lösungsansätzen für Android", "Zusammenfassung von Multimedia-Operationstechniken für Android (Audio, Video, Aufnahme usw.)", "Zusammenfassung der Verwendung von Basic-Komponenten in Android", "Zusammenfassung von View-Techniken in Android", "Zusammenfassung von Layout-Techniken in Android" und "Zusammenfassung der Verwendung von Steuerelementen in Android".
Hoffentlich hat dieser Artikel zu Ihrer Android-Programmierung beigetragen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört den Urhebern. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen, die Website besitzt keine Eigentumsrechte, hat den Inhalt nicht manuell bearbeitet und übernimmt keine rechtlichen Haftung. Falls Sie Inhalte finden, die möglicherweise gegen das Urheberrecht verstoßen, freuen wir uns über eine E-Mail an: notice#w und die Bereitstellung von relevanten Beweisen. Bei nachgewiesener Urheberrechtsverletzung wird der fragliche Inhalt sofort gelöscht.3Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört den Urhebern. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen, die Website besitzt keine Eigentumsrechte, hat den Inhalt nicht manuell bearbeitet und übernimmt keine rechtlichen Haftung. Falls Sie Inhalte finden, die möglicherweise gegen das Urheberrecht verstoßen, freuen wir uns über eine E-Mail an: notice#w und die Bereitstellung von relevanten Beweisen. Bei nachgewiesener Urheberrechtsverletzung wird der fragliche Inhalt sofort gelöscht.