Socket programlama, ağ üzerinden veri iletimi sağlamak için kullanılan bir tekniktir ve Android uygulamaları geliştirmede önemli bir yer tutar. Bu makalede, Android Studio kullanarak socket programlama yapmanın temel adımlarını inceleyeceğiz.
Socket Nedir?
Socket, bir ağ üzerinde iletişim kurmak için kullanılan bir uç noktadır. İki ana türü bulunmaktadır: TCP ve UDP. TCP, güvenilir veri iletimi sağlarken, UDP daha hızlı ancak daha az güvenilir bir iletim yöntemi sunar. Android uygulamalarında genellikle TCP kullanılır.
Android Studio ile Socket Programlama Adımları
Socket programlamaya başlamak için Android Studio’da yeni bir proje oluşturmalısınız. Proje oluşturma işlemi tamamlandıktan sonra, aşağıdaki adımları takip edebilirsiniz.
1. Gerekli İzinleri Almak
Android uygulamanızın internet erişimi olması gerektiğinden, `AndroidManifest.xml` dosyasına internet izni eklemeniz gerekiyor. Bunun için aşağıdaki satırı dosyanıza ekleyin:
“`xml
“`
2. Socket Oluşturma
Socket oluşturmak için Java dilinde `Socket` sınıfını kullanacağız. Aşağıda basit bir client socket örneği bulunmaktadır:
“`java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientSocket {
private String serverAddress;
private int serverPort;
private Socket socket;
public ClientSocket(String address, int port) {
this.serverAddress = address;
this.serverPort = port;
}
public void connect() {
try {
socket = new Socket(serverAddress, serverPort);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// Sunucuya mesaj gönder
out.println(“Merhaba Sunucu!”);
// Sunucudan yanıt al
String response = in.readLine();
System.out.println(“Sunucudan gelen yanıt: ” + response);
in.close();
out.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
“`
3. Arka Plan İşlemleri İçin AsyncTask Kullanma
Socket bağlantıları, ağ üzerinde çalıştıkları için ana UI thread’ini bloklamamak adına arka planda çalıştırılmalıdır. Bunun için `AsyncTask` sınıfını kullanabilirsiniz:
“`java
import android.os.AsyncTask;
public class ConnectTask extends AsyncTask {
private String address;
private int port;
public ConnectTask(String address, int port) {
this.address = address;
this.port = port;
}
@Override
protected String doInBackground(Void… voids) {
ClientSocket clientSocket = new ClientSocket(address, port);
clientSocket.connect();
return null;
}
}
“`
4. Uygulama Arayüzü Oluşturma
Socket bağlantınızı başlatmak için bir kullanıcı arayüzü oluşturmalısınız. `activity_main.xml` dosyasına bir buton ekleyin: