Males Koding

Icon

Blog yang isinya ternyata banyak kodingannya

Socket Programming di C

Di ambil dari sini. Sedikit snippet tentang socket programming di C. Pemrograman ini menggunakan fungsi-fungsi socket yang sudah disediakan oleh Linux. Untuk beberapa OS lain seperti BSD dan MacOS kalau gak salah penangannya agak sedikit berbeda.

Read the rest of this entry »

Filed under: C, Dedicated, Lecture, Linux, Medium, Network Programming, Snippets, tutorial , , , ,

Simulasi Local Network di VirtualBox

Kadang-kadang untuk melakukan pengembangan aplikasi yang berjalan pada jaringan, agak menyulitkan ketika kita tidak memiliki jaringan yang sesungguhnya. Kalau untuk pengembangan aplikasi web sebenarnya tidak terlalu penting memerlukan lebih dari 1 IP. Untuk mensimulasikan session pun cukup dengan melakukan instalasi 2 atau lebih browser. Sedangkan kalau ingin melakukan pengambangan aplikasi menggunakan socket biasanya harus mempunyai lebih dari 2 IP (atau 2 mesin lah).

Tapi dengan menggunakan VirtualBox, kita dapat membuat simulasi sebuah jaringan.

Kali ini saya sedang eksplorasi bagaimana melakukannya. Di VirtualBox ini saya mempunyai 2 buah OS yakni Ubuntu dan XP. Saya ingin mencoba agar Ubuntu dan XP ini dapat berada dalam 1 jaringan yang sama.

Read the rest of this entry »

Filed under: Easy, Miscelleneaous, Network Programming, Snippets, Ubuntu, tutorial , , , , , ,

Simple SCP

Diambil dari artikel lama di blog

Tugas IF3292 Pemrograman Internet disuruh bikin yang beginian
SCP
Dari semua tugas sebelumnya

  1. HTML Editor with DHTML
  2. Simple CMS with PHP
  3. Web Chess with AJAX

yang paling menarik yet paling susah yang ini……
disuruh bikin protokol sendiri….

tapi sebenarnya kalau dipikir-pikir konsepnya gak terlalu susah…. teknologinya aja yang ribet….

jadi intinya disuruh ngebikin program SCP-like dengan menggunakan socket programming di Linux…..
fungsinya cuman 2 : buat ngopi dan mindahin folder/file dari satu host ke host yang lain…
Read the rest of this entry »

Filed under: C, Network Programming, Programming , , , , , , ,

Komunikasi Modul Kernel – User Space Program melalui procfs

Melanjutkan postingan tentang modul kernel yang dulu.

Biasanya untuk melakukan pemindahan data antara dua buah program cukup dengan menggunakan sebuah file yang dibaca bersama (selain dengan menggunakan IPC). Hal ini cukup sulit untuk dilaksanakan pada modul kernel karena pada dasarnya modul tidak disediakan fungsi file I/O layaknya system call open(). Menulis file pada kernel space menjadi cukup sulit.

Salah satu cara yang mudah melakukan komunikasi antara sebuah kernel module dan user space program adalah dengan menggunakan procfs. Procfs adalah sebuah filesystem yang menyediakan informasi mengenai process-process dalam kernel. Procfs ini dapat dibuka di folder /proc.

$cd /proc
$ls -l | less
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 1
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 119
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 120
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 121
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 1369
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 1372
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 1385
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 1392
dr-xr-xr-x  6 root       root               0 2009-01-07 15:07 2

Di sana tersimpan data-data mengenai process yang sedang dijalankan. Folder-folder yang memiliki nama berupa angka merepresentasikan process dengan process ID (PID) yang  sama dengan nama folder tersebut. Di dalam folder tersebut tersimpan data-data mengenai process yang bersangkutan.

Read the rest of this entry »

Filed under: C, Linux, Snippets, System Programming , , , , , , ,

Timer pada Modul Kernel Linux

Salah satu hal yang bisa dilakukan pada modul kernel adalah membuat sebuah sistem yang sifatnya real time. Salah satu contohnya adalah pada tugas terakhir kuliah IF4097 Jaringan Komputer Lanjut. Pada tugas ini kita diminta untuk membuat sebuah modul kernel yang secara periodik mengecek availability sebuah node pada jaringan.

Timer ini dapat diimplementasikan dengan menggunakan struktur data timer_list. Struktur data ini dapat di lihat pada include/linux/timer.h

struct timer_list
{
		struct timer_list *next;
		struct timer_list *prev;
		unsigned long expires;
		unsigned long data;
		void (*function)(unsigned long);
};

Read the rest of this entry »

Filed under: C, Linux, Programming, Snippets, System Programming , , , , , , , , ,

Modul Kernel Sederhana

Modul kernel adalah sebuah file obyek yang berisi fungsi-fungsi yang dapat digunakan oleh kernel sistem operasi. Tujuan dibuat sebuah modul kernel adalah untuk menyediakan fungsi-fungsi yang tidak disediakan secara default oleh kernel. Modul ini biasanya digunakan sebagai device driver.

Contoh sebuah modul kernel sederhana

/* file contoh.c */
#include <linux/module.h>
static void __init hello_init(void)
{
	printk(KERN_INFO "Hello World!");
}

static void __exit hello_exit(void)
{
	printk(KERN_INFO "Hello World!");
}

module_init(hello_init);
module_exit(hello_exit);

Untuk menjalankan modul ini pertama-tama kode harus dikompilasi. Kompilasi dapat dilakukan dengan menggunakan Makefile seperti di bawah ini

obj-m += contoh.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Kompilasi dapat dilakukan dengan menggunakan perintah Make.

Selanjutnya akan terdapat beberapa file termasuk contoh.ko.

Untuk melakukan instalasi cukup jalankan perintah pada shell

#insmod contoh.ko

Untuk membuang modul dari kernel jalankan perintah

#rmmod

Keluaran dapat dilihat dengan menggunakan perintah

#dmesg

Bisa dilihat pada kode di atas, fungsi inisialisasi, yakni fungsi yang dijalankan pertama kali diset dengan menggunakan fungsi module_init, sedangkan fungsi yang dijalankan saat modul dibuang diset dengan menggunakan fungsi module_exit.

Pada dasarnya modul kernel berbeda dengan program biasa. Karena berjalan pada kernel space, modul hanya dapat menggunakan fungsi-fungsi yang disediakan oleh kernel. Modul kernel tidak dapat menggunakan fungsi-fungsi yang disediakan library. Oleh karena itu header file seperti stdio.h, stdlib.h, tidak dapat dipakai dalam modul. Dapat dilihat di atas, untuk melakukan pencetakan ke terminal tidak digunakan fungsi printf melainkan fungsi printk yang pada dasarnya memiliki fungsi dan fitur yang sama.

File yang berisi modul sederhana dan makefilenya dapat diunduh di sini.
NB : Direname dulu ke file zip.

Filed under: C, Linux, Snippets, System Programming , , , , , ,

Pipe beruntun

Di dalam UNIX Command, sering dipakai tanda “|”. Tanda “|” adalah pipe, maksudnya stdout dari sebuah program dapat menjadi stdin dari program yang lain. Di dalam C, fitur ini dapat diimplementasikan dengan fungsi pipe(). Di contoh yang ada pada spesifikasi tersebut hanya menangani antara 2 proses.

#include <stdlib .h>
#include <unistd .h>

int main(){
	int fildes[2];
	const int BSIZE = 100;
	char buf[BSIZE];
	ssize_t nbytes;
	int status;
	status = pipe(fildes);
	switch (fork()) {
	case -1: /* Handle error */
	    break;

	case 0:  /* Child - reads from pipe */
	    close(fildes[1]);                       /* Write end is unused */
	    nbytes = read(fildes[0], buf, BSIZE);   /* Get data from pipe */
	    /* At this point, a further read would see end of file ... */
	    close(fildes[0]);                       /* Finished with pipe */
	    exit(EXIT_SUCCESS);

	default:  /* Parent - writes to pipe */
	    close(fildes[0]);                       /* Read end is unused */
	    write(fildes[1], "Hello world\n", 12);  /* Write data on pipe */
	    close(fildes[1]);                       /* Child will see EOF */
	    exit(EXIT_SUCCESS);
	}
}

Fungsi pipe ini akan menyambungkan input dari sebuah filedescriptor menjadi output pada filedescriptor lain. Input/output ini dibaca dengan menggunakan fungsi read() dan write().

Read the rest of this entry »

Filed under: C, Linux, Snippets, System Programming , , , , , , , ,

iniParser : memparsing file dengan ekstensi *.ini

INI file adalah sebuah format file yang digunakan untuk menampung konfigurasi. Ekstensi INI berasal dari kata “initialization”. Biasanya memang digunakan untuk menampung konfigurasi inisialisasi dari sebuah aplikasi.

Format datanya adalah seperti ini

[section]
name = value ; comment

Untuk mengolah file seperti ini pada lingkungan pemrograman C, sudah terdapat banyak library yang dapat digunakan untuk melakukan parsing, mengedit, serta mengambil dan mengeset nilai pada file tersebut. Salah satu dari library tersebut adalah iniParser. Library sangat baik untuk digunakan karena cukup lengkap dan simpel.

Read the rest of this entry »

Filed under: C, Linux, Snippets , , , , , ,

Menggunakan MySQL C API pada Netbeans

Belakangan gw sering banget menggunakan Netbeans sebagai IDE utama untuk ngoding aplikasi dengan bahasa C. Penggunaan Netbeans C/C++ Development adalah salah satu fitur yang sangat menyenangkan bagi para programmer C/C++. Salah satu fitur yang menyenangkannya adalah kemudahan untuk mengkonfigurasi kode seperti penambahan library dan include folder.

Sebagai contoh kemudahannya adalah saat gw ingin menggunakan MySQL C API untuk aplikasi yang sedang gw kembangkan. Tahap-tahapnya adalah

  1. Instalasi libmysqlclient.
    Caranya sangat mudah. Untuk Ubuntu tinggal ketik pada terminal

    #sudo apt-get install libmysqlclient15-dev
  2. Include header mysql.
    Tinggal mengetikkan
    #include <mysql/mysql.h>
    

    Dapat dilihat fitur intellisense pada Netbeans langsung bekerja.

  3. Tambahkan library libmysql pada linker.
    Tanpa melakukan ini fungsi-fungsi yang akan digunakan tidak dapat dilink. Caranya adalah klik kanan pada project yang sedang dikerjakan, pilih Properties. Kemudian pilih menu Linker > Libraries. Pilih Add Library. Kemudian masukkan /usr/lib/libmysqlclient.a
  4. Setelah itu penulisan kode dapat dengan mudah dilakukan karena ada fitur intellisense.

    Dan pembangunnya juga dapat tinggal dilakukan dengan fungsi Build pada Netbeans.

Gampang jadinya ^_^

Referensi lebih lengkap mengenai fungsi-fungsi yang disediakan, ada pada dokumentasi resmi MySQL C API di sini

Filed under: C, Linux , , , , , ,

Menambahkan Skrip Yang Dijalankan Setelah Boot

Kadang-kadang diperlukan sebuah skrip tertentu yang ingin kita jalankan secara otomatis setiap kali sistem operasi boot.

Untuk menambahkan skrip semacam ini tambahkan sebuah skrip pada folder /etc/init.d Misalkan skrip1.sh

#!/bin/sh
#skrip1.sh
ls / > /usr/tes

Skrip di atas menghasilkan sebuah file /usr/tes yang berisi daftar direktori pada /

Kemudian ganti mode file tersebut

#chmod +x skrip1.sh

Lalu jalankan command

#update-rc.d skrip1.sh defaults

Skrip ini akan dijalankan setelah boot

Filed under: Linux, Snippets , , ,

About Me

avatar
Just a man who only knows how to code but really dislike doing it

Contact Me





Top Rated

Twitter Terbaru