Cara Membuka Socket TCP Device Android Menggunakan Java

Jika kamu sedang membangun aplikasi yang membutuhkan komunikasi antara dua perangkat, salah satu solusi yang bisa kamu gunakan adalah socket TCP. Pada Android, socket TCP memungkinkan perangkat untuk mengirim dan menerima data secara langsung menggunakan protokol jaringan yang stabil dan andal. Artikel ini akan membahas secara lengkap cara membuka socket TCP di device Android menggunakan Java, termasuk contoh implementasi server dan client.


Apa Itu Socket TCP?

TCP (Transmission Control Protocol) adalah protokol komunikasi yang digunakan untuk mengirim data antar perangkat melalui jaringan secara reliable (terjamin). Socket TCP pada Android dapat digunakan untuk:

  • Komunikasi antar perangkat (misal: Android ke PC, Android ke Android)
  • Membangun server mini di dalam perangkat
  • Membuat fitur remote control, sinkronisasi, backup, dll.

Kapan Menggunakan Socket TCP di Android?

Socket TCP ideal digunakan ketika kamu ingin:

  • Membangun aplikasi komunikasi langsung antar perangkat
  • Mengakses data dari server lokal (seperti dari PC ke Android)
  • Mengembangkan tools debugging, backup, atau remote monitoring

Persiapan

Sebelum mulai, pastikan:

  • Aplikasi kamu memiliki permission untuk akses internet dan jaringan lokal.
  • Koneksi Wi-Fi atau hotspot aktif antar perangkat.

Tambahkan izin berikut di AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Implementasi Server TCP di Android (Java)

Berikut adalah contoh implementasi server TCP di Android menggunakan Java:

TcpServerThread.java

public class TcpServerThread extends Thread {

private ServerSocket serverSocket;
private boolean running = false;
private static final int PORT = 8888;

public void run() {
running = true;

try {
serverSocket = new ServerSocket(PORT);
Log.d("TCP", "Server started on port " + PORT);

while (running) {
Socket clientSocket = serverSocket.accept();
Log.d("TCP", "Client connected: " + clientSocket.getInetAddress());

BufferedReader input = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
String message = input.readLine();
Log.d("TCP", "Received: " + message);

clientSocket.close();
}

} catch (IOException e) {
Log.e("TCP", "Error in server: " + e.getMessage());
}
}

public void stopServer() {
running = false;
try {
serverSocket.close();
} catch (IOException e) {
Log.e("TCP", "Error closing server: " + e.getMessage());
}
}
}

Untuk menjalankan:

TcpServerThread serverThread = new TcpServerThread();
serverThread.start();

Implementasi Client TCP di Android (Java)

Berikut contoh kode client TCP yang mengirim pesan ke server:

TcpClient.java

public class TcpClient extends Thread {

private String serverIp;
private int serverPort;
private String message;

public TcpClient(String ip, int port, String message) {
this.serverIp = ip;
this.serverPort = port;
this.message = message;
}

public void run() {
try {
Socket socket = new Socket(serverIp, serverPort);

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(message);

socket.close();
} catch (IOException e) {
Log.e("TCP", "Client error: " + e.getMessage());
}
}
}

Cara menjalankan client:

new TcpClient("192.168.1.10", 8888, "Halo dari Android!").start();

Tips & Catatan Penting

  • Socket tidak berjalan di main thread. Jalankan selalu di background thread.
  • Untuk koneksi antar device, pastikan keduanya terhubung ke jaringan yang sama (Wi-Fi atau hotspot).
  • Beberapa device Android membatasi penggunaan port tertentu di Android 10+.
  • Jangan lupa untuk menambahkan firewall rule di sisi PC jika melakukan komunikasi dari Android ke PC.

Kesimpulan

Socket TCP adalah metode yang powerful dan fleksibel untuk komunikasi langsung antara perangkat Android dan device lainnya. Dengan mengikuti langkah-langkah di atas, kamu bisa membangun server TCP sederhana dan client TCP di Android menggunakan Java. Cocok untuk aplikasi seperti backup data, remote monitor, dan aplikasi client-server lokal.