Home General Computer Multimedia Business Lounge

Post Reply 
TCP Socket Programming dengan Bahasa C (Linux)
04-19-2011, 08:35 PM
Post: #1
TCP Socket Programming dengan Bahasa C (Linux)
TCP Socket Programming dengan Bahasa C (Linux)
--------------------
author: mywisdom
thanks to: flyf666,gunslinger,petimati,peneter,ketek,chaer,wenkhairu,wahyu,n0te,blackn0te,kumbang,v3n0m and all devilzc0de crew and members
---------------------

==========SOCKET PROGRAMMING DENGAN BAHASA C=====================

socket programming merupakan pemrograman yg bertujuan agar program yang satu bisa berkomunikasi dg program lainya dalam suatu jaringan komputer / internet bisa juga disebut sebagai pemrograman jaringan.

* TCP Socket Programming

A. TCP Client dengan C

Kita akan mulai dengan membuat suatu program klien dg bahasa C yang bertujuan untuk melakukan koneksi TCP port 80 ke devilzc0de.org dan melakukan http request.
ok mari kita liat dulu kira 2 seperti apa kira2 bentuk dari suatu http request, krn sy gak apal
--------------------
tes nc listen port 3339 lalu akses dengan web browser via alamat : http://localhost:3339
# nc -l -p 3339 -vvv
listening on [any] 3339 ...
connect to [127.0.0.1] from myw1sd0m.org [127.0.0.1] 46545
GET / HTTP/1.1
Host: localhost:3339
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102814 Ubuntu/8.10 (intrepid) Firefox/3.0.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.8,zh-cn;q=0.7,zh;q=0.5,zh-tw;q=0.3,zh-hk;q=0.2
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

sent 0, rcvd 478
-----------------
ok kurang lebih bentuknya seperti di atas

berikut ini adalah kode c untuk tcp client kita yang akan melakukan simulasi http request:
---------------------------
/**sample tcp client
by mywisdom
currently devilzc0de coder
**/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <string.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define RCVBUFSIZE 9999
/**kurang lebih di bawah ini adalah bentuk dari suatu http request dengan browser mozilla**/
#define EXPLOIT "GET / HTTP/1.0\nHost: devilzc0de.org:80\nUser-Agent: Mozilla/5.0\nAccept: text/html\nKeep-Alive: 300\n\n"
int main()
{
//echo buffer merupakan karakter dengan panjang 9999
char echobuf[RCVBUFSIZE];
int soket,bytesrcv, totalbytes;
//struktur hostent bisa dilihat di /usr/include/netdb.h , berguna untuk mengirimkan dns query
//cara kerja dns bisa anda baca di http://myw1sd0m.blogspot.com/2011/04/add...odule.html
struct hostent *target;
struct sockaddr_in server;
if((target=gethostbyname("devilzc0de.org")) == NULL)
{
printf("\n[-]fungsi gethostbyname gagal ! keluar dari program ! \n");
exit(1);
}
else
{
//di sini kita telah berhasil mendapatkan ip address dari devilzc0de.org (ip resolved)
printf ("\n[+]fungsi gethostbyname berhasil, ip devilzc0de.org adalah: %u.%u.%u.%u\n",(unsigned char)target->h_addr[0],(unsigned char)target->h_addr[1],(unsigned char)target->h_addr[2],(unsigned char)target->h_addr[3]);
}
//selanjutnya kita akan menciptakan socket
if((soket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("\ngagal menciptakan socket !! keluar dari program !\n");
exit(1);
}
else
{
printf ("\n[+]di sini file deskriptor telah siap !! selanjutnya kita akan melakukan fungsi connect\n");
}
//kita isi struktur sockaddr_in, berupa sin_family=AF_INET untuk koneksi TCP/IP. sin_addr data alamat ip,sin_port berisi nomor port
server.sin_family=AF_INET;
server.sin_addr.s_addr=*(long *)(target->h_addr);
server.sin_port=htons(80);
//setelah itu kita akan mencoba memanggil fungsi connect() untuk terhubung ke server
if(connect(soket, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1)
{
printf("\n[-]koneksi ke devilzc0de.org via port 80 gagal\n");
exit(1);
}
else
{
printf("\n[+]fungsi connect() ke devilzc0de.org via port 80 berhasil !!! selanjutnya kita akan bermain di send dan recv\n");
}
//di sini kita kirimkan variabel konstan EXPLOIT yang udah didefinisiin di atas yg isinya meniru2 http request normal
if(send(soket, EXPLOIT,9999,0)==-1)
{
printf("\n[-]gagal send!!! program keluar !!!\n");
exit(1);
}
else
{
totalbytes=0;
while (totalbytes < RCVBUFSIZE)
{
//kita terima response dari server dengan fungsi recv
if ((bytesrcv = recv(soket, echobuf, RCVBUFSIZE - 1, 0)) <= 0)
{
printf("\n[-]menunggu sampai data response dari server kita terima\n");
}
else
{
totalbytes += bytesrcv;
echobuf[bytesrcv] = '\0';

}
totalbytes++;


}
}

if(echobuf)
{
printf("\n[+]di bawah ini adalah kiriman data dari server : \n");
printf(echobuf);
}
printf("\n[+]selanjutnya akan kita akhiri dengan fungsi close dan program berakhir !!!\n");
close(soket);
}

--------------------------------

selanjutnya kita simpan misal dg nama browse.c lalu compile dan jalankan:

------------------------------------------
# gcc -o browse browse.c
browse.c: In function 'main':
browse.c:87: warning: format not a string literal and no format arguments
# ./browse

[+]fungsi gethostbyname berhasil, ip devilzc0de.org adalah: 119.235.27.196

[+]di sini file descriptor telah siap !! selanjutnya kita akan melakukan fungsi connect

[+]fungsi connect() ke devilzc0de.org via port 80 berhasil !!! selanjutnya kita akan bermain di send dan recv

[-]menunggu sampai data response dari server kita terima

[-]menunggu sampai data response dari server kita terima
.....cutted............
[+]di bawah ini adalah kiriman data dari server :
HTTP/1.1 301 Moved Permanently
Date: Mon, 18 Apr 2011 22:03:02 GMT
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8q DAV/2 mod_fcgid/2.3.6 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.15
Location: http://www.devilzc0de.org
Content-Length: 0
Connection: close
Content-Type: text/html

[+]selanjutnya akan kita akhiri dengan fungsi close dan program berakhir !!!
----------------------------------------------


ok mari kita bahas tentang arti kode2 c di atas, pada dasarnya program di atas menggunakan fungsi2 berikut ini secara berurutan:

-gethostbyname() -> fungsi ini akan mengisi struktur hostent

coba anda lihat file netdb.h di /usr/include/netdb.h , di situ ada keterangan jelas tentang struktur hostent, yg merupakan struktur yang menyimpan data hostname, alias, dll.
--------------------------------------------
/* Description of data base entry for a single host. */
struct hostent
{
char *h_name; /* Official name of host. */
char **h_aliases; /* Alias list. */
int h_addrtype; /* Host address type. */
int h_length; /* Length of address. */
char **h_addr_list; /* List of addresses from name server. */
#if defined __USE_MISC || defined __USE_GNU
# define h_addr h_addr_list[0] /* Address, for backward compatibility.*/
#endif
};
--------------------------------------------

- socket() -> menciptakan socket (titik akhir komunikasi) dan menentukan protokol yg akan kita pakai selanjutnya mengembalikan FD (file descriptor) untuk fungsi2 socket selanjutnya, diperlukan header : #include <sys/socket.h> dan #include <sys/types.h>
contoh dari penggunaan fungsi socket ini bisa kita lihat di atas:
--------------------------------------------------
socket=socket(AF_INET, SOCK_STREAM, 0)
-------------------------------------------------
untuk parameter pertama biasa disebut domain / protocol family. yang akan kita pakai. support untuk tiap sistem berbeda-beda, misal di salah satu mesin bisa kita lihat di /usr/include/bits/socket.h :

--------------------
sh-3.2# uname -a
Linux xxxxxxxxxxxxxxxxxxxxxx 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
sh-3.2# cat /usr/include/bits/socket.h
-------cutted----
/* Protocol families. */
#define PF_UNSPEC 0 /* Unspecified. */
#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
#define PF_INET 2 /* IP protocol family. */
#define PF_AX25 3 /* Amateur Radio AX.25. */
#define PF_IPX 4 /* Novell Internet Protocol. */
#define PF_APPLETALK 5 /* Appletalk DDP. */
#define PF_NETROM 6 /* Amateur radio NetROM. */
#define PF_BRIDGE 7 /* Multiprotocol bridge. */
#define PF_ATMPVC 8 /* ATM PVCs. */
#define PF_X25 9 /* Reserved for X.25 project. */
#define PF_INET6 10 /* IP version 6. */
#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
#define PF_DECnet 12 /* Reserved for DECnet project. */
#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
#define PF_SECURITY 14 /* Security callback pseudo AF. */
#define PF_KEY 15 /* PF_KEY key management API. */
#define PF_NETLINK 16
#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
#define PF_PACKET 17 /* Packet family. */
#define PF_ASH 18 /* Ash. */
#define PF_ECONET 19 /* Acorn Econet. */
#define PF_ATMSVC 20 /* ATM SVCs. */
#define PF_SNA 22 /* Linux SNA Project */
#define PF_IRDA 23 /* IRDA sockets. */
#define PF_PPPOX 24 /* PPPoX sockets. */
#define PF_WANPIPE 25 /* Wanpipe API sockets. */
#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
#define PF_MAX 32 /* For now.. */
---------------------cutted------------------------

nama protokol family yg disupport sistem ini bisa kita lihat di kolom ke dua, sedangkan di satu mesin lagi yg 32 bit:
root@bt:~# uname -a
Linux myw1sd0m.org 2.6.30.9 #1 SMP Tue Dec 1 21:51:08 EST 2009 i686 GNU/Linux
root@bt:~# cat /usr/include/bits/socket.h
-------------cutted-------------
/* Protocol families. */
#define PF_UNSPEC 0 /* Unspecified. */
#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
#define PF_UNIX PF_LOCAL /* POSIX name for PF_LOCAL. */
#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
#define PF_INET 2 /* IP protocol family. */
#define PF_AX25 3 /* Amateur Radio AX.25. */
#define PF_IPX 4 /* Novell Internet Protocol. */
#define PF_APPLETALK 5 /* Appletalk DDP. */
#define PF_NETROM 6 /* Amateur radio NetROM. */
#define PF_BRIDGE 7 /* Multiprotocol bridge. */
#define PF_ATMPVC 8 /* ATM PVCs. */
#define PF_X25 9 /* Reserved for X.25 project. */
#define PF_INET6 10 /* IP version 6. */
#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
#define PF_DECnet 12 /* Reserved for DECnet project. */
#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
#define PF_SECURITY 14 /* Security callback pseudo AF. */
#define PF_KEY 15 /* PF_KEY key management API. */
#define PF_NETLINK 16
#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
#define PF_PACKET 17 /* Packet family. */
#define PF_ASH 18 /* Ash. */
#define PF_ECONET 19 /* Acorn Econet. */
#define PF_ATMSVC 20 /* ATM SVCs. */
#define PF_SNA 22 /* Linux SNA Project */
#define PF_IRDA 23 /* IRDA sockets. */
#define PF_PPPOX 24 /* PPPoX sockets. */
#define PF_WANPIPE 25 /* Wanpipe API sockets. */
#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
#define PF_IUCV 32 /* IUCV sockets. */
#define PF_RXRPC 33 /* RxRPC sockets. */
#define PF_MAX 34 /* For now.. */
------cutted----

jadi bisa kita lihat protokol2 family (domain) yang terinstall di tiap sistem berbeda beda.

parameter kedua merupakan jenis socket yg akan dipakai, jenis socket yang dipakai:

- SOCK_STREAM -> untuk tipe tcp
- SOCK_DGRAM -> untuk tipe udp
- SOCK_RAW -> raw protocol biasa dipakai untuk spoofing
- SOCK_SEQPACKET -> sequence packet
- SOCK_PACKET
- SOCK_RDM

untuk contoh di atas yg socket(AF_INET, SOCK_STREAM, 0), kita menggunakan AF_INET karena kita akan menggunakan TCP/IP socket, argumen selanjutnya kita isi dengan jenis SOCK_STREAM yang berarti kita akan menggunakan TCP (Connection Stream), dengan argumen protokol 0 atau bisa juga diisi dengan argumen IPPROTO_TCP untuk koneksi TCP.
jika socket <0 berarti terjadi kegagalan.

- bind() -> bind digunakan untuk mempersiapkan suatu nomor port di lokal secara acak untuk keperluan koneksi kita.

- connect() -> digunakan untuk konek ke server, sebelumnya kita harus mengisi dulu struktur dari sockaddr_in
server.sin_family=AF_INET;
server.sin_addr.s_addr=*(long *)(target->h_addr);
server.sin_port=htons(80);

kita lihat di file /usr/include/netinet/in.h berikut ini struktur sockaddr_in yang akan kita pakai:

untuk kernel2 lama strukturnya langsung keliatan:

#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
struct sockaddr_in {
short int sin_family; /* Address family */
unsigned short int sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */

/* Pad to size of `struct sockaddr'. */
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
sizeof(unsigned short int) - sizeof(struct in_addr)];
};



untuk header file di mesin sy saat ini strukturnya sockaddr_in di file /usr/include/netinet/in.h:
-------------------
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_);
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* Internet address. */

/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
__SOCKADDR_COMMON_SIZE -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
----------------------
dari header ini kita tidak melihat adanya sin_family,jika kita lihat lebih jauh ke file /usr/include/bits/sockaddr.h kita bisa melihat makro sbb:
--------------------
#define __SOCKADDR_COMMON(sa_prefix) \
sa_family_t sa_prefix##family
----------------------

di mana makro tersebut akan mengambil parameter dari sa_prefix dan menggabungkanya sehingga akan tercipta variabel baru sin_family untuk struktur sockaddr_in
-------------
sa_prefix##family-> sin_family
--------------

- send() -> fungsi ini berguna mengirimkan data ke server
misal: send(soket_klien, "Selamat datang !", 17, 0)
soket_klien adl file deskriptor, pesanya:selamat datang, dengan panjang 17

- recv() -> fungsi ini berguna untuk menerima response dari server
- close() -> setelah transaksi socket selesai kita tutup file deskriptor dengan fungsi close()

untuk lebih jelas tentang fungsi 2 di atas dari shell Anda ketikkan : man socket

B. Making TCP Server

Setelah memahami cara kerja suatu program klien tcp kita akan mencoba membuat satu tcp server yang akan berjalan di background (daemon) dengan bahasa C yang akan listen di port 80
--------------------------------------------
/***sample server by mywisdom**/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>


int main()
{
int soket,soket_klien,hasil_bind,sin_size,fd;
struct sockaddr_in me;
struct sockaddr_in klien;

//gunakan fungsi fork untuk daemonize di sini (istilah bg process)

if((soket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("\ngagal menciptakan socket !! keluar dari program !\n");
exit(1);
}
else
{
printf("\n[+]socket berhasil dicreate sekarang mari kita lakukan bind port\n");
}

//persiapan struktur sebelum bind()
me.sin_family = AF_INET;
me.sin_addr.s_addr = INADDR_ANY;
me.sin_port = htons(80);

if(hasil_bind = bind(soket, (struct sockaddr *) &me, sizeof(me))==-1)
{
printf("\n[-]gagal melakukan bind!!! coba cek apakah port sudah dipakai !!!\n");
exit(1);
}
else
{
printf("\n[+]bind berhasil dilakukan!!! selanjutnya kita lakukan listen()\n");
}

if(hasil_bind = listen(soket, 5)==-1)
{
printf("\ngagal listen !!! \n");
exit(1);
}
else
{
printf("\n[+]berhasil melakukan listen selanjutnya tinggal looping untuk accept\n");
}
char s[16];
while(1)
{
sin_size = sizeof (klien);
soket_klien = accept(soket, (struct sockaddr *)&klien, &sin_size);
if (soket_klien == -1)
{
continue;
}
else
{

printf("[+]1 klien terkoneksi !!!\n", s);
if (!fork())
{
close(soket);
}
if (send(soket_klien, "Selamat datang !", 17, 0) == -1)
{
printf("\n[+]jika -1 berarti send gagal !!! \n");
close(soket_klien);
exit(1);
}

close(soket_klien);
}
}
close(soket);

}
-----------------------

- keterangan
urutan - urutan fungsi dasar dari program server di atas adalah :

1. socket

if((soket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("\ngagal menciptakan socket !! keluar dari program !\n");
exit(1);
}

kita akan membuat socket,jika socket gagal maka variabel integer soket bernilai -1 jika berhasil =0

selanjutnya kita siapkan struktur untuk bind port 80:
//persiapan struktur sebelum bind()
me.sin_family = AF_INET;
me.sin_addr.s_addr = INADDR_ANY;
me.sin_port = htons(80);

2. bind

if(hasil_bind = bind(soket, (struct sockaddr *) &me, sizeof(me))==-1)
{
printf("\n[-]gagal melakukan bind!!! coba cek apakah port sudah dipakai !!!\n");
exit(1);
}

selanjutnya kita perlu melakukan bind port 80 untuk mempersipkan listen

3. listen
if(hasil_bind = listen(soket, 5)==-1)
{
untuk listen di port 80 sebelum kita menerima accept dari klien

4. accept
soket_klien = accept(soket, (struct sockaddr *)&klien, &sin_size);
fungsi ini akan mengembalikan nilai 0 jika terjadi klien yg melakukan connect() ke server

5. send()
penjelasan fungsi send sudah ada di atas.

Ok selanjutnya agar program di atas bisa berjalan di background (daemonize) kita tambahkan fork()
kode ini digunakan untuk daemonize
if (fork() != 0)
{
exit(1);
}

misal bisa kita taruh kode untuk daemonize di atas fungsi socket di program di atas:

if (fork() != 0)
{
exit(1);
}
if((soket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("\ngagal menciptakan socket !! keluar dari program !\n");
exit(1);
}

kompile dan tes:

-------------
root@bt:~/socket# gcc -o daemonize daemonize.c
root@bt:~/socket# ./daemonize
root@bt:~/socket#
[+]socket berhasil dicreate sekarang mari kita lakukan bind port

[+]bind berhasil dilakukan!!! selanjutnya kita lakukan listen()

[+]berhasil melakukan listen selanjutnya tinggal looping untuk accept

root@bt:~/socket# ./klien
[+]fungsi gethostbyname berhasil, ip localhost adalah: 127.0.0.1

[+]di sini file descriptor telah siap !! selanjutnya kita akan melakukan fungsi
connect

[+]fungsi connect() ke localhost via port 80 berhasil !!! selanjutnya kita akan
bermain di send dan recv

[-]menunggu sampai data response dari server kita terima

[-]menunggu sampai data response dari server kita terima

--------------cutted here------------------
[+]di bawah ini adalah kiriman data dari server :
Selamat datang !
[+]selanjutnya akan kita akhiri dengan fungsi close dan program berakhir !!!
root@bt:~/socket#
-------------
Find all posts by this user
Quote this message in a reply
04-19-2011, 08:36 PM
Post: #2
RE: TCP Socket Programming dengan Bahasa C (Linux)
pertamax om!!!
Visit this user's website Find all posts by this user
Quote this message in a reply
04-19-2011, 08:45 PM
Post: #3
RE: TCP Socket Programming dengan Bahasa C (Linux)
di tunggu om mywisdom submit2 artikel nya lagi di exploit-id asik asik

ijin pelajari dulu om
Visit this user's website Find all posts by this user
Quote this message in a reply
04-19-2011, 08:46 PM
Post: #4
RE: TCP Socket Programming dengan Bahasa C (Linux)
mantab om..ijin copas ne source

skalian ad modul untuk socket.h gak om ketawa
Visit this user's website Find all posts by this user
Quote this message in a reply
04-19-2011, 09:39 PM
Post: #5
RE: TCP Socket Programming dengan Bahasa C (Linux)
Keren say... smangatsmangat

Tapi awak indak mangarati!!! ngambekngambek

Belajar dulu ah sama om programmer keren... belajarbelajar
Visit this user's website Find all posts by this user
Quote this message in a reply
04-19-2011, 09:43 PM
Post: #6
RE: TCP Socket Programming dengan Bahasa C (Linux)
mantab....... baru pertama saya baca yang kek gini di DC ketawa

dordor
Visit this user's website Find all posts by this user
Quote this message in a reply
04-19-2011, 10:03 PM
Post: #7
RE: TCP Socket Programming dengan Bahasa C (Linux)
Terlalu berat bisa bikin stress stress

Step by step dulu masterz...
Find all posts by this user
Quote this message in a reply
04-19-2011, 10:18 PM
Post: #8
RE: TCP Socket Programming dengan Bahasa C (Linux)
dom dari pada boros line source pake C mendingan python dom..hahha


import socket

web = 'http://devilzc0de.org
get = socket.gethostbyname(web)
print get

kwkkw..enak banged...pendek source.. tapi ok lah tergantung orang seneng yang mana..oh yah dom...fungsi fork() kalo di socket buat apa yah..kadang suka susah mahamin w...pencerahan dom..
Find all posts by this user
Quote this message in a reply
04-20-2011, 01:16 AM
Post: #9
RE: TCP Socket Programming dengan Bahasa C (Linux)
fork buat bikin child process dia tujuanya biar bisa ngehandle multiple connection (klo dua atau 3 klien misalnya konek barengan), tapi jelek sih sebenernya bagusan pake multithreading pake pthread klo mo multi thread
Find all posts by this user
Quote this message in a reply
Post Reply 


Topic Tools
Topic Link :
BBCode :
HTML Code :
View a Printable Version Send Thread to a Friend Subscribe to this thread
Submit Google Submit Face book Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq

Possibly Related Threads...
Thread: Author Replies: Views: Last Post
  C# Mencari Zodiak dengan SubString k4d03l 3 129 03-30-2012 04:26 PM
Last Post: k4d03l
  Buat Ombak Segitiga dengan While dan For RieqyNS13 7 316 03-22-2012 05:56 PM
Last Post: avia
  [dummie]basic programming kernel modul alessandra 5 324 03-21-2012 06:49 AM
Last Post: x.intruders
  [Tutor] Network Programming jackerp 8 343 03-02-2012 10:37 AM
Last Post: jackerp
  [Tutor] Perulangan dengan while chiboga 5 266 02-25-2012 12:58 PM
Last Post: chiboga
Tongue Pengenalan Bahasa C (catatan kuliah) Wayc0de 25 781 02-22-2012 09:00 PM
Last Post: Wayc0de
Tongue [Tutor] Iseng dengan C++ nyiurmelambai 24 1,069 02-15-2012 07:22 PM
Last Post: hael
  Sekilas VFS pada linux kernel 2.4 ev1lut10n 1 229 01-21-2012 09:16 PM
Last Post: ketek
  [Solved] C Programming d3m3nt012 8 336 01-16-2012 03:20 AM
Last Post: d3m3nt012
  [Solved] Biar bisa kembali ke menu awal gimana ya gan? pake bahasa c yak? Udhiiie_ 8 486 01-10-2012 08:54 AM
Last Post: bakunawa

Users Browsing
1 Guest(s)


Stop SOPA/PIPA | Discuss !