Membuat Client-Server Dengan Protokol UDP

Tidak terlalu banyak yang saya tahu tentang UDP (User Datagram Protokol), tapi saya pernah membuat aplikasi yang menggunakan itu. Setahu saya, UDP dapat digunakan untuk kebutuhan komunikasi data yang tidak membutuhkan sinkronisasi sempurna. Protokol UDP dapat digunakan untuk pembuatan aplikasi yang membutuhkan komunikasi data secara real-time.

Server
Buatlah variabel global untuk menampung data koneksi.
private Socket connection;
Berikut ini adalah kode untuk membentuk server UDP. Tentukan alamat IP dan port yang akan digunakan sebagai alamat server UDP. Masukkan nomor port yang belum digunakan oleh sistem. IP "127.0.0.1" adalah alamat IP lokal pada komputer. Anda dapat menggunakan alamat IP lain jika anda sedang terhubung ke jaringan intranet.
string ipAddr = "127.0.0.1";
int port = 5000;
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(ipAddr), port);
connection = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
connection.Bind(ipep);
Setelah membentuk server UDP, buatlah listener seperti tampak pada kode di bawah ini :
while (true)
{
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint remote = (EndPoint)sender;
    byte[] buffer = new byte[1024];

    int recv = connection.ReceiveFrom(buffer, ref remote);
    IPEndPoint ipep2 = remote as IPEndPoint;
    string ip_addr = ipep2.Address.ToString();
    string request = Encoding.ASCII.GetString(buffer, 0, recv);
}
Listener berfungsi untuk menangani ketika ada client yang melakukan koneksi ke server. Listener akan memberikan port virtual kepada client untuk membedakan client yang satu dengan client yang lainnya. Dari variabel ip_addr akan dihasilkan informasi alamat IP dengan format "127.0.0.1:3550". Setiap client yang terkoneksi ke server akan mendapatkan nomor port virtual yang unik. Ketika client mengirimkan data kepada server, maka data tersebut dapat dibaca dengan cara memasukkan paket data ke dalam buffer. Buffer ini kemudian dapat diubah menjadi data teks.

Dari nomor port virtual dan request yang diperoleh dari client, anda dapat mengatur sendiri hendak melakukan tugas apa server yang akan anda buat. Setelah request dari client diproses, server seharusnya memberikan balasan/response. Untuk mengirimkan response kepada client, gunakan fungsi di bawah ini :
private void Send(EndPoint ep, string message)
{
    if (message == null) return;
    byte[] data = new byte[message.Length];
    data = Encoding.ASCII.GetBytes(message);
    connection.SendTo(data, data.Length, SocketFlags.None, ep);
}

Client
Buatlah variabel global berikut ini :
private Socket server;
private EndPoint remote;
Agar client UDP dapat terhubung ke server, maka alamat IP dan port server harus sesuai. Berikut adalah kode untuk menghubungkan client ke server :
string ipAddr = "127.0.0.1";
int port = 5000;
IPEndPoint ipep = new IPEndPoint(
                IPAddress.Parse(ipAddr), port);

server = new Socket(AddressFamily.InterNetwork,
               SocketType.Dgram, ProtocolType.Udp);

IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
remote = (EndPoint)sender;

byte[] buffer = new byte[1024]
int recv = null;
Pada client juga dibutuhkan listener untuk membaca response dari server. Berikut adalah contoh kode listener :
while (true)
{
    buffer = new byte[1024];
    recv = server.ReceiveFrom(buffer, ref remote);
    string response = Encoding.ASCII.GetString(buffer, 0, recv);
}
Untuk mengirimkan data ke server, maka gunakanlah fungsi ini :
private void Send(string text)
{
    server.SendTo(Encoding.ASCII.GetBytes(text, remote);
}
Demikianlah tulisan saya kali ini, semoga bermanfaat. Teruslah berimajinasi untuk menciptakan aplikasi yang bermanfaat. Terimakasih.

Ahmad Jawahir

    Tidak ada komentar:

    Posting Komentar