Socket Programming

Socket programming adalah pemrograman yang menggunakan socket. Socket ini semacam terowongan/tunnel yang bisa dipakai untuk komunikasi/pertukaran arah secara bolak-balik. Dengan socket programming, komunikasi dapat terjalin antara bahasa pemrograman yang berbeda, antara tingkatan user yang berbeda, bahkan antar komputer yang berbeda atau gabungan ketiganya.

Sebagai contoh kita akan membuat contoh socket programming untuk manajemen email

  1. Socket server
    Kita akan membuat socket server yang dibuat dengan bahasa Perl yang dijalankan dengan user root (super user) untuk menanggapi suatu permintaan dari socket client:
    $server_sock = new IO::Socket::INET (LocalPort => 1234, Listen => $SOMAXCONN,Proto => 'tcp', Reuse => 1);
    unless ($server_sock)
    {
        die "Could not create server socket; $!";
    }

    while ($sock_to_client = $server_sock->accept())
    {
        $sSocketData = <$sock_to_client>;
        print $sSocketData;
        @SockArgv = split(/:/,$sSocketData);
        $request = $SockArgv[0];
        if ($request eq     "ae")
        {
            $email=$SockArgv[1];
            $password=$SockArgv[2];
            $hasil = add_email($email, $password);
            print "$hasil\n";
            print $sock_to_client "$hasil\n";
        }
          elsif ($request eq "cp")
          {
                  $email=$SockArgv[1];
                  $old_password=$SockArgv[2];
                  $new_password=$SockArgv[3];
                  $hasil = change_password($email,$old_password,$new_password);
                  print "$hasil\n";
                  print $sock_to_client "$hasil\n";
          }
          elsif ($request eq "rm")
          {
                  $perintah="/home/setup/cron/smtpd/restart_smtpd > hasil";
                  system($perintah);
                  $perintah ="cat hasil";
                  $hasil = qx/$perintah/;
                  $hasil =~ s/\n/<br>/g;
                  print "$hasil\n";
                  print $sock_to_client "$hasil\n";
          }
        elsif ($request eq "qr)
        {
            $perintah="qmail-qstat > hasil; qmail-qread >> hasil;qmail-qstat >> hasil;echo 'remote dan done'>> hasil;qmail-qread | grep remote | wc -l>> hasil;qmail-qread | grep done | wc -l >> hasil; ceksmtp >> hasil";
            system($perintah);
            $perintah ="cat hasil";
            $hasil = qx/$perintah/;
            $hasil =~ s/\n/<br>/g;
            #print "$hasil\n";
            print $sock_to_client "$hasil\n";
        }
        elsif ($request eq "rm")
        {
            $myid=$SockArgv[1];
            $totbaris=$SockArgv[2];
            $perintah="cat `find /var/qmail/queue -name $myid | grep mess` | head -$totbaris > hasil";
            system($perintah);
            $perintah ="cat hasil";
            $hasil = qx/$perintah/;
            $hasil =~ s/\n/<br>/g;
            #print "$hasil\n";
            print $sock_to_client "$hasil\n";
        }
        elsif ($request eq "dm")
        {
            $myid=$SockArgv[1];
            $perintah="rm -f `find /var/qmail/queue -name $myid `";
            system($perintah);
            print $sock_to_client "selesai delete\n";
        }
        elsif ($request eq "nae")
        {
            $email=$SockArgv[1];
            $perintah="/home/setup/daemon/refresh_user_password.pl";
            system($perintah);
            $perintah="/home/setup/daemon/update_user";
            system($perintah);
            print $sock_to_client "selesai non active $email\n";
        }
        $sock_to_client->close;
    } close($server_sock)
  2. Socket client
    Untuk socket client ini kita menggunakan bahasa pemrograman PHP yang dijalankan oleh user biasa
    function AddEmail($email,$password)
    {
        $IP="localhost";
        $Port=1234;
        $fp = fsockopen($IP,$Port);
        $SocketData="ae:$email:$password:\n";
        fputs ($fp,$SocketData);
        $hasil = fgets($fp,100);
        return $hasil;
    }
    function ChangePassword($email,$old_password,$new_password)
    {
        $IP="localhost";
        $Port=1234;
        $fp = fsockopen($IP,$Port);
        $SocketData="cp:$email:$old_password:$new_password:\n";
        fputs ($fp,$SocketData);
        $hasil = fgets($fp,100);
        return $hasil;
    }
    function restart_smtpd()
    {
        $IP="localhost";
        $Port=1234;
        $fp = fsockopen($IP,$Port);
        $SocketData="rs::::\n";
        fputs ($fp,$SocketData);
        $hasil = fgets($fp,500);
        return $hasil;
    }

    function qmail_qread()
    {
        $IP="localhost";
        $Port=1234;
        $fp = fsockopen($IP,$Port);
        $SocketData="qr::::\n";
        fputs ($fp,$SocketData);
        $hasil = fgets($fp,200000);
        return $hasil;
    }

Kunjungi www.proweb.co.id untuk menambah wawasan anda.

Share |

Portfolio

www.wearnespc.comwww.solper.comwww.autojaya.comwww.intisolar.comsmartprint.co.idwww.ottopharm.comoliser.co.idAnd More ....

Livechat

  • Sonny
    Marketing

  • Aris G
    Support

  • Agus
    Support

  • Kurnianto
    Support

  • Eko P
    Designer

  • Andreas
    Designer

  • LiveZilla Live Help

Address

PT. Proweb Indonesia
Perkantoran Duta Merlin No F4
Jl. Gadjah Mada 3-5
Jakarta Pusat
GPS: S 6o 09' 58.1", E 106o 49' 3.3"

 

Phone : 021 - 2636 3170
    021 - 3377 0050
     
Mobile : 0856 - 9360 1378
    0812 - 806 2772
    0857 - 1586 8992
    0816 - 180 8005
     
Blackberry PIN : 23096502
     
Fax : 021 - 633 5765
     
Web : www.proweb.co.id