September 2006 - Posts

Getting Started to build Socket Client-Server using C++

Paper ini sekedar getting started untuk memulai coding socket dengan C++. Persiapan yang harus dilakukan sebelum coding:

  • Compiler C++. Disini pakai VC++ 8.0
  • IDE VC++. Saya memakai Visual C++ 8.0 (Satu shipping dengan Visual Studio 2005)
  • Platform SDK. Kalau install VC++ 8.0 biasanya include didalamnya ada platform SDK

Windows Socket 2 Architecture
Secara general, Windows Socket 2 Architecture dapat dilihat pada gambar dibawah ini



Kalau dilihat gambar diatas, untuk dapat coding Windows Socket 2, kita memerlukan library WS2_32.dll

Start Coding Socket dengan Visual C++

Pada session kali ini, kita akan membuat aplikasi console. Untuk dapat coding Windows Socket 2 maka kita harus memasang directory dari Platform SDK VC++ karena library (*.lib) dan header file nya ada disana.

  1. Buat aplikasi console Win32 Application
  2. Lakukan konfigurasi Platform SDK dibagian propertie project dapat dilihat pada gambar dibawah ini (misalkan VS 2005 di instal di directory D maka dimasukkan path platform SDK yaitu D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include )
  3. Lakukan konfigurasi Windows Socket library seperti pada gambar dibawah ini
  4. Kalau sudah melakukan konfigurasi baik untuk server maupun client maka selanjutnya kita baru coding Party!!!
  5. Dibagian file header stdafx.h tambahkan code disini atau langsung ke CPP nya kalau memang tidak memakai stdafx.h : #include <winsock2.h>
  6. Untuk bagian server

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{

    // Initialize Winsock.
    WSADATA wsaData;   
    int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
    if ( iResult != NO_ERROR )
        printf("Error at WSAStartup()\n");



    // Create a socket.
    SOCKET m_socket;
    m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

    if ( m_socket == INVALID_SOCKET )
    {
        printf( "Error at socket(): %ld\n", WSAGetLastError() );
        WSACleanup();
        return 0;
    }

    // Bind the socket.
    sockaddr_in service;

    service.sin_family = AF_INET;
    service.sin_addr.s_addr = inet_addr( "127.0.0.1" );
    service.sin_port = htons( 27015 );

    if ( bind( m_socket, (SOCKADDR*) &service, sizeof(service) ) == SOCKET_ERROR )
    {
        printf( "bind() failed.\n" );
        closesocket(m_socket);
        return 0;
    }
   
    // Listen on the socket.
    if ( listen( m_socket, 1 ) == SOCKET_ERROR )
        printf( "Error listening on socket.\n");

    // Accept connections.
    SOCKET AcceptSocket;

    printf( "Waiting for a client to connect...\n" );
    while (1)
    {
        AcceptSocket = SOCKET_ERROR;
        while ( AcceptSocket == SOCKET_ERROR )
        {
            AcceptSocket = accept( m_socket, NULL, NULL );
        }
        printf( "Client Connected.\n");
        m_socket = AcceptSocket;
        break;
    }
   
    // Send and receive data.
    int bytesSent;
    int bytesRecv = SOCKET_ERROR;
    char sendbuf[32] = "Server: Sending Data.";
    char recvbuf[32] = "";
   
    bytesRecv = recv( m_socket, recvbuf, 32, 0 );
    printf( "Data Recv: %s\n", recvbuf );
    printf( "Bytes Recv: %ld\n", bytesRecv );
   
    bytesSent = send( m_socket, sendbuf, strlen(sendbuf), 0 );
    printf( "Bytes Sent: %ld\n", bytesSent );

    int c = getchar();

    return 0;
}

Untuk bagian client

 #include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    // Initialize Winsock.
    WSADATA wsaData;
    int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
    if ( iResult != NO_ERROR )
        printf("Error at WSAStartup()\n");

    // Create a socket.
    SOCKET m_socket;
    m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

    if ( m_socket == INVALID_SOCKET )
    {
        printf( "Error at socket(): %ld\n", WSAGetLastError() );
        WSACleanup();
        return 0;
    }

    // Connect to a server.
    sockaddr_in clientService;

    clientService.sin_family = AF_INET;
    clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
    clientService.sin_port = htons( 27015 );

    if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR)
    {
        printf( "Failed to connect.\n" );
        WSACleanup();
        return 0;
    }

    // Send and receive data.
    int bytesSent;
    int bytesRecv = SOCKET_ERROR;
    char sendbuf[32] = "This is my socket.";
    char recvbuf[32] = "";

    bytesSent = send( m_socket, sendbuf, strlen(sendbuf), 0 );
    printf( "Bytes Sent: %ld\n", bytesSent );

    while( bytesRecv == SOCKET_ERROR )
    {
        bytesRecv = recv( m_socket, recvbuf, 32, 0 );
        if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET )
        {
            printf( "Connection Closed.\n");
            break;
        }
        if (bytesRecv < 0)
            return 0;
        printf( "Bytes Recv: %ld\n", bytesRecv );
    }

    int c = getchar();

    return 0;
}

Secara run all application


source code lengkapnya dapat didownload disini
http://www.peopleenterprise.com/files/9/c_language/default.aspx

Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under: ,

Astra International Runs Community Server

Barusan saya setup dan running portal Community Server di lingkungan Astra International. Ini untuk kepentingan diskusi dan kolaborasi antara .NET Developer. Portal ini juga sebagai media ajak diskusi. Semoga CS ini bisa berguna Wink
Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under:

What do You Think about My book "Pro BITS: Background Intelligent Transfer Service Programming" ?

Sejak kemarin, saya menyibukkan di sela-sela waktu dirumah untuk menulis sebuah buku yang ingin ku terbitkan ke Apress.com, bersamaan itu saya juga lagi finishing untuk menyelesaikan menulis buku Reporting dengan Crystal Report XI Release 2 yang juga memanfaatkan Visual Studio 2005 sebagai Reporting designernya yang mana akan diterbitkan di Elexmedia Komputindo ( I hope setelah lebaran saya bisa submit ke redaksi untuk dicetak). Untuk buku yang akan ku submit ke Apress.com seputar Messaging karena memang salah satu area saya disini, buku ini beri judul "Pro BITS: Background Intelligent Transfer Service Programming", kalaupun tidak tembus saya coba kan submit ke O'Reilly atau Microsoft Press via My MVP Lead - Asia PacificSmile

Buku "Pro BITS: Background Intelligent Transfer Service Programming" akan fokus bagaimana menerapakan BITS untuk download/upload ataupun messaging system. Di awal chapter, saya mencoba mengiring pembaca untuk melihat secara general BITS dalam kacamata COM dan Win32 API dan selanjutnya saya mencoba memperlihatkan bagaimana melakukan interop/invoke BITS API melalui C# serta membuat wrapper class. Buku ini juga akan menekankan pada case study dengan kondisi bermacam-macam. Berikut ini draft TOC dari buku "Pro BITS: Background Intelligent Transfer Service Programming" :

  1. Introduction to Background Intelligent Transfer Service
  2. BITS COM and Win32 API
  3. Using BITS in .NET
  4. Working with BITS Download Job
  5. Working with BITS Upload Job
  6. BITS Notification
  7. BITS Security
  8. Working with BITS and Windows Service
  9. Building BITS Explorer

Semoga malam ini saya menyelesaikan draft dari buku ini, dan kamis, saya akan mencoba untuk mengirimnya ke redaksi Apress.com. I like Apress Motto "Professional to Professional". Jika buku ini tembus, saya mencoba untuk mengontak BITS Program Manager di Microsoft Redmond sebagai reviewer. I hope.....Doakan saya.....jika ada comment, let me know....

Share this post: | | | |
Posted by Agus Kurniawan | 5 comment(s)
Filed under: , ,

Waktunya Bangun Bangsa Indonesia

Terenyu juga ketika membaca berita yang berjudul "Kisah Mahasiswa Orla di Kuba".[ http://www.detiknews.com/indexfr.php?url=http://www.detiknews.com/index.php/detik.read/tahun/2006/bulan/09/tgl/27/time/100647/idnews/683496/idkanal/10 ]..mestinya pemerintah Indonesia bisa membantu mereka-mereka para mahasiswa indonesia yang sekolah di luar negeri yang tidak bisa kembali ke Indonesia karena ada choas di dalam negeri. Bayangkan lahir di indonesia besar di indonesia terus kuliah di luar negeri ketika mau pulang, paspor tidak berlaku..ini kan aneh bin ajaib??? mestinya  harus dibenarkan sistem pasport di Indonesia.

Bisa jadi mereka-mereka itulah mutiara bangsa yang dapat meningkatkan kualitas pendidikan di indonesia. Pro pemerintah Indonesia semoga bisa bertindak cepat dalam menyelesaikan permasalahan ini yang kupikir ini tidak komplek, ini hanya masalah prosedural. Apakah para diplomat kita melempem??

Share this post: | | | |
Posted by Agus Kurniawan | with no comments

ADSI Interop Material

Guys, untuk yang belum dapat material ADSI Interop + source code di acara Architect Forum 20 September 2006 dapat didownloan di http://www.peopleenterprise.com/files/9/architecture_key/default.aspx
Share this post: | | | |
Posted by Agus Kurniawan | with no comments

Opening Distance Learning Program By People Enterprise

People Enterprise lagi menyelenggarakan Distance Learning, mungkin ini akan menjadikan alternatif media pembelajaran. Check di http://www.peopleenterprise.com/blogs/distance_learning_blog/archive/2006/09/17/16.aspx
Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under:

Security Hole on Comment Input Portal (ITS Portal as Case Study)

Portal ataupun blog sudah banyak dilengkapi dengan komentar yang bertujuan untuk mengikutsertakan pengunjung dalam portal tersebut. Semakin trend komentar tiap portal maka kejahatan spammer semakin besar dan kemudian orang membuat sistem untuk memblocking komentar melalui teknik seperti CAPTCHA.
Iseng2x masuk ke portal ITS, www.its.ac.id, dimana dibagian news itu setiap orang bisa memasukkan komentar tapi melakukan registrasi dan kutemukan teknik CAPTCHA nya sangat jelek..mudah di broken dengan algoritma yang tidak perlu canggih alias pakai conditional IF hehehe..lihat komentar portal nya pada gambar dibawah ini:

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

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

Dengan memanfaatkan teknologi .NET terutama dengan menggunakan socket dan permainan protocol HTTP maka kita bisa memasukkan komentar via small application;) selanjutnya dikirim via AJAX (ajax.comment.php) dari portal ITS (Imporsonate technique) . Semoga team webmaster portal ITS bisa memperbaiki sistem CAPTCHA nya. Ada kelemahan pada sistem CAPTCHA di portal ITS, www.its.ac.id antara lain:
1. Teknik generate gambar CAPTCHA itu tidak unik dan mudah ditebak
2. gambar yang dipakai static...
   disana ada gambar
   http://www.its.ac.id/images/antispam/01.jpg --> katak
   http://www.its.ac.id/images/antispam/02.jpg --> kambing
   http://www.its.ac.id/images/antispam/05.jpg --> bebek

   ini algoritma CAPTHA yang paling jelek yang pernah kulihat
3. User memilih CAPTCHA...ini bad, sedapat mungkin user hanya
   mengisi satu saja dan no clue!!

Untunglah portal ITS, dilengkapi dengan moderate komentar sehingga ini bisa dicegah tapi ada effort yaitu mesti ada orang menunggu membaca komentar untuk approval. Akhirnya saya hentikan penetration test ini...I'm not hacker...saya hanya IT Professional IT yang interest dalam messaging (included security) technology. So I don't want to hack ITS web server. Dosa man!...lagi mau puasa:p lagian gw alumnus situ;)) tapi jangan nanya PHP ke gw, krn memang gak bisa PHP:p

Share this post: | | | |
Posted by Agus Kurniawan | 79 comment(s)
Filed under:

Jakarta Sumber Ilmu Teknologi Informasi

Jakarta...jakarta..semua orang pada ke jakarta mulai dari mencari sesuap nasi hingga segunung emas..mulai dari mencari ilmu hingga menipu orang....itulah jakarta bahkan untuk mencari ilmu saja tempatnya pada semua di jakarta..nah daerah dimana loh ?

Mencari ilmu memang merupakan suatu kewajiban tanpa batas umur anda, tapi kadang kalanya ada batasan terutama dalam financial. Tak terlepas juga teknologi informasi, kalau ada bisa menyisihkan sedikit uang untuk berinternet ria maka akan jauh lebih mudah mendapatkan resource teknologi informasi malah ada yang free, itu antara lain

Ada juga dalam bentuk seminar atau workshop yang free seperti Community In Touch yang diselenggarakan oleh Community bersama dengan Microsoft Indonesia tapi ini balik lagi lokasinya di Jakarta..well, so...apa bisa sampai di daerah anda....tapi jangan menyerah, anda baiknya mengkontak Microsoft Indonesia, bisa lewat pak Risman, http://blogs.netindonesia.net/risman atau Mas Zeddy, http://blogs.netindonesia.net/zeddy . Kalau memang lokasi anda sangat potensial mungkin mereka sangat akan respect. Kalau tidak terkontak, mungkin bisa melakukan kontak ke group leader Indonesia .NET Developer Community, http://www.NetIndonesia.net , metode nya adalah

  • Siapkan lokasi dan peralatan pendukung seminar/workshop
  • Siapkan pengumuman/marketing acara anda
  • Selanjutnya anda kontak group leader Indonesia .NET Developer Community untuk mengisi

Saya pikir ini jauh lebih cepat dan realistik, dimana anda bisa swadaya community. Let see, banyak case study ini yang sukses. Kenapa anda tidak mencoba.

Berbekal dengan kasus diatas, ada solusi lain untuk pemerataan teknologi informasi hingga ke daerah..salah satunya adalah Distance Learning (belajar jarak jauh). Seperti dalam blog saya yang terdahulu, http://blogs.netindonesia.net/agus/archive/2006/08/16/10675.aspx , saya akan realisasikan distance learning bersama People Enterprise. Konsep Distance Learning yang akan diterapkan simple dan tidak berbelit-belit. Setelah anda terdaftar maka anda akan mendapatkan

  • Material class yang diikuti
  • Studying Scheduling Form yang berisi arahan dan schedule dari proses belajar
  • Lembar kerja student yang berisi tugas-tugas yang harus dikerjakan
  • Lembar Bengkel Student yang berisi project yang harus dikerjakan

Disamping itu dilengkapi dengan portal yang akan memonitoring semua activity belajar anda. Distance Learning Program akan available dalam minggu2x ini. Keep your eyes on this blog or http://www.PeopleEnterprise.com

Share this post: | | | |
Posted by Agus Kurniawan | with no comments

Back to compus, School of Computer Science

Akhir bulan september ini akan dimulai semester baru artinya kumulai back to campus, school of computer science. Beberapa material lagi direfresh supaya ketika masuk tidak jadi jaka sambung, ini termasuk 2 operating system yang lama ku tidak pakai yaitu FreeBSD dan Red Hat. Hmm..dua minggu lalu kudapatkan CDs OS Linux Mandrake..it's cool , smell like OS Windows ;). Tak terlepas ku coba running OS Linux Fedore, I got these CDs from Pak Kunto, thanks akhirnya CD Fedora nya kepakai juga ;) . Untuk compiler c++, saya hanya akan pilih 2 compiler yaitu GCC dan Microsoft C++ Compiler. Back to studying materials, Ada 14 mata kuliah termasuk thesis yang harus kuselesiakan paling cepat 2 tahun untuk mendapat master degree ;) . Dari mata kuliahnya memang banyak yang unik ketimbang kampus yang lain dengan bidang yang sama. Saya sendiri akan fokus ke research artificial intelligent and messaging. Dari hasil rencana study akhirnya kupilih 14 mata kuliah itu antara lain:

  • Mathematics and Statistic for Computing
  • Algorithm and Analaysis Design
  • System and Analaysis Design
  • English Language
  • Computer Network Analysis
  • Parallel Computing
  • Knowledge Management
  • Pattern Recognition
  • Expert System and Decision Support System
  • Intelligence Computing
  • Research Methodology
  • Collocium
  • Seminar
  • Thesis

Kuberharap saya bisa menyelesaikan dengan tepat waktu atau mungkin lebih cepat(??) tanpa ada kendala baik kondisi fisik otak, kesehatan hingga kondisi financial :) . Semoga semua berjalan dengan lancar..amin

Share this post: | | | |
Posted by Agus Kurniawan | 2 comment(s)
Filed under:

Bulan Ramadhan...Bulan penuh Training..

Guys, sekedar bocoran info....untuk meramaikan suasana bulan ramadhan, saya bermaksud untuk mengadakan training technology yang dikemas secara fun dan yang jelas dengan harga training yang kompetitif. Ada 3 paket training yang dapat diikuti

  • Paket Hemat Ramadhan
  • Paket Workshop dan buka puasa bersama
  • Paket Workshop dan sahur bersama  

Paket Hemat Ramadhan
Tujuan dari paket training ini adalah mendapatkan banyak konsumen dengan kualitas yang bagus dan harga yang murah. Training ini akan diadakan setiap hari dan ini dikemas dalam bentuk:

  • Mentoring dan coaching
  • Penyampaian teori singkat dan banyak praktek
  • Hand-on lab
  • Durasi 3 jam

Paket Workshop dan Buka Puasa Bersama
Tujuan dari paket ini adalah memenuhi kebutuhan pasar industri IT dan dikemas dalam suatu lebih technical. Workshop ini dikemas dalam bentuk:

  • Workshop dengan full hand-on-lab
  • Mentoring dan coaching
  • Durasi 5 jam
  • Dilengkapi dengan case study

Paket Workshop dan Sahur Bersama
Tujuan dari paket ini adalah memenuhi kebutuhan pasar industri IT pada bidang spesifik teknologi tertentu. Workshop ini dikemas dalam bentuk:

  • Workshop dengan full hand-on-lab
  • Mentoring dan coaching
  • Durasi 4 jam
  • Dilengkapi dengan case study

Berikut ini beberapa macam training dari paket Training yang ada:
Paket Hemat Ramadhan

  • Pemrograman VB.NET 2.0 (Beginner-3 Jam)
  • Pemrograman C# 2.0 (Beginner-3 Jam)
  • Pemrograman ASP.NET 2.0 (Beginner-3 Jam)
  • Pemrograman Windows Mobile (Beginner-3 Jam)

Paket Workshop dan Buka Puasa Bersama

  • Administrating MS SQL Server 2005 (Intermediate, Advanced - 5 jam)
  • ASP.NET 2.0 Security (Intermediate, Advanced - 5 jam)
  • Administrating Active Directory Windows 2003 (Intermediate, Advanced - 5 jam)

Paket Workshop dan Sahur Bersama

  • Practical Web Hacking (Intermediate, Advanced - 4 jam)

Untuk info waktu, tempat, pendaftaran dan harga training..tunggu info selanjutnya..yang jelas lokasi training ada di Jakarta..

Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under:

COM Interop ADSI (Seri 1)

Speaking di Software Architect forum untuk tanggal 20 September 2006 mengenai COM Interop with ADSI bukanlah big topic. Secara general COM Interop merupakan salah satu teknik bagaimana .NET melakukan interaksi dengan COM. What is COM ? Microsoft Guys said "Unmanaged Code"....I think it's a stupid statement, smells like marketing words. It means if You use .NET then your app is called managed code. Apa sih "Unmanaged" dan "Managed" ? Apakah dengan menggunakan solusi .NET itu merupakan suatu kemajuan software engineering ? hmm....belum tentu juga semua tergantung dari sudut pandangnya. Talking about marketing dan effort memang .NET bisa menguntungkan;)...tapi ini juga menunjukan kelemahan anda dalam software engineering...let say "anda artinya tidak mampu untuk melakukan manage code anda sehingga anda menyerahkan ke .NET supaya dia yang manage yours"...

Ok, back to topic..talking about COM Interop, topik ini sebenarnya pernah saya bawakan ketika masih bekerja di Balicamp dimana saya mempresentasikan mengenai COM Interop antara C++ dan .NET awal tahun 2002. Sebenarnya kalau anda sudah mengusai filosofi COM Interop maka mau interaksi dengan COM lainnya sangat mudah..dalam kasus ini adalah ADSI yang merupakan COM dari Active Directory. Pada session Architect Forum ini, saya akan membahas 4 topik yaitu

  • COM Interop Architecture
  • COM Interop Process Flow
  • COM Interop Access Security
  • Accessing ADSI

Well, ok nanti saya akan detailkan didalam blog ini, ditunggu dengan sabar...ada comment? let me know

Share this post: | | | |

TechEd SEA 2006 :: ASP.NET 2.0 Material

Guys, Barusan gw upload file material ASP.NET 2.0 dari TechEd SEA 2006 di Malaysia. Buruan download di http://peopleenterprise.com/files/9/net_technology/default.aspx 
Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under: ,

TechEd SEA 2006 :: Refactoring Database

Hari kamis ini, di session pertama, saya mengikuti session yang membahas Refactoring Database. WHat!!...Basically I'm not DBA but the most of my projects is using database solution so session ini bisa berarti buatku dan juga companyku. Kupikir session ini membahas process dan architecture dari refactoring database tetapi session ini lebih mengarah ke product features..yaya memang sedikit agak kecewa...yeah session ini lebih membahas product features dari VSTS 2005 yang memungkinkan untuk melakukan refactoring database...tapi product ini juga masih ada yang kekurangannya yaitu tidak bisa refactoring hingga level application..such as Data Access Layer.

Jika ada rekan-rekan trully ingin belajar refactoring database, saya rekomendasikan untuk membeli buku “Refactorin Databases“ yang menulisnya ada Scott. 

Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under: ,

People Enterprise Portal is Up again

Guys, akhirnya portal People Enterprise up...so rekan-rekan bisa join lagi ke portal PE, check out: http://www.PeopleEnterprise.com
Share this post: | | | |
Posted by Agus Kurniawan | 1 comment(s)
Filed under:

Speaking in Software Architect Forum - 20 September 2006

Guys, kalau ada waktu luang dan ingin mengupdate diri mengenai Active Directory dari segi architecture maupun implementasi maka rekan-rekan bisa registrasi di acara Software Architect Forum pada tanggal 20 September 2006 di Micosoft Indonesia, Contact commdev@netindonesia.net atau (021) 68055843. Kalau tidak berhalangan saya juga akan mengisinya dengan topik “COM Interop with ADSI”. Saya akan coba memberikan sharing mengenai interop ADSI melalui C++ dan C#. Preview dari presentasi saya ini akan rekan-rekan dapatkan di blog ini....ok, saya tunggu kehadiran anda:)

Share this post: | | | |
Posted by Agus Kurniawan | with no comments
Filed under: ,
More Posts Next page »