Minggu, 03 Juni 2012

PEMROGRAMAN TCP/IP

Perintah-perintah umum jaringan

Dalam komputasi, jaringan pemrograman, pada dasarnya identik dengan pemrograman socket atau pemrograman client-server, melibatkan programmer menulis program yang berkomunikasi dengan program lain di sebuah jaringan komputer. Program atau proses yang memulai komunikasi disebut proses clien, dan program yang menunggu komunikasi untuk dimulai adalah proses server. clien dan server berproses bersama-sama untuk membentuk suatu sistem terdistribusi. Komunikasi antara clien dan proses server dapat berupa connection-oriented (seperti sirkuit TCP didirikan virtual atau sesi), atau connectionless (berdasarkan datagrams UDP).

Sebuah program yang dapat bertindak baik sebagai clien dan server didasarkan pada komunikasi peer-to-peer.
Ini adalah contoh dari fungsi atau metode biasanya disediakan oleh library API:

    * Socket () membuat soket baru dari jenis socket tertentu, yang diidentifikasi oleh nomor integer, dan mengalokasikan sumber daya sistem untuk itu.
    * Bind () biasanya digunakan pada sisi server, dan rekan soket dengan struktur alamat soket, yaitu nomor port tertentu lokal dan alamat IP.
    * listen () digunakan pada sisi server, dan menyebabkan socket TCP terikat untuk memasukkan mendengarkan negara.
    * connect () digunakan pada sisi client, dan memberikan nomor pelabuhan bebas lokal untuk socket. Dalam kasus soket TCP, hal itu menyebabkan upaya untuk membangun sebuah koneksi TCP yang baru.
    * accept () digunakan pada sisi server. Ia menerima upaya masuk yang diterima untuk membuat koneksi TCP yang baru dari klien remote, dan menciptakan socket baru yang terkait dengan pasangan alamat soket sambungan ini.
    * Send () dan recv (), atau write () dan read (), atau recvfrom () dan sendto (), digunakan untuk mengirim dan menerima data ke / dari soket remote.
    * Close () menyebabkan sistem untuk melepaskan sumber daya yang dialokasikan untuk socket. Dalam kasus TCP, koneksi dihentikan

Alamat socket Lokal: Lokal alamat IP dan nomor port
*alamat Remote socket : Hanya untuk soket TCP yang ditetapkan. Sebagaimana dibahas di bagian Client-Server di bawah ini, hal ini penting karena server TCP dapat melayani beberapa klien secara bersamaan. Server membuat satu socket untuk setiap klien, dan soket ini berbagi alamat soket.
*Protocol: Sebuah protokol transportasi (misalnya, TCP, UDP), IP, atau lainnya. port TCP UDP port 53 dan 53 secara konsekuen berbeda, soket yang berbeda.

Selanjutnya mengenai Scoket bisa kita lihat di wiki
http://en.wikipedia.org/wiki/Internet_socket
http://en.wikipedia.org/wiki/Socket_programming

nah pada kali ini kita akan membuat sebuah program yaitu basic TCP/IP Socket di C# ...


bisa di jelaskan ap itu TCP/IP ??

TCP/IP adalah salah satu jenis protokol* yg memungkinkan kumpulan komputer untuk berkomunikasi dan bertukar data didalam suatu  network (jaringan).
Merupakan himpunan aturan yg memungkinkan komputer untuk  berhubungan  antara satu dengan yg lain, biasanya berupa bentuk / waktu / barisan /  pemeriksaan error saat transmisi data.

PROC of Consep program :
Dalam tutrial kali ini kita akan menganalisis dua aplikasi. Dengan kata lain clien dan server sebuah tutorial yang sangat dasar :)
Cara kerjanya? server menunggu sampai clien tersambung ke IP Address dan Port. Ketika  ini terjadi, server dan client siap untuk bertukar informasi melalui koneksi streaming(established connection streaming)

Catatan: Untuk membuat soket clien ini lebih mudah dan server dapat bertukar hanya satu pesan dan juga semua koneksi kita akan mengunakan alamat 127.0.0.1 (localhost).

Sebelum kita mulai kita akan mengunakan library C# Yaitu
 
[code]System.Net.Sockets[/code]
ok mari kita lihat code untuk servernya :
[code]using System;
using System.Text;
using System.Net.Sockets;
public class Simple_server
{
    public static void Main()
    {
        uint id = 0;
        // Pesan hanya terlihat pada console server
        // di sini kita memberitahukan abhwa program telah berjalan dan memberitahukan kapan program berjalan
        // dengan tambahan waktu + DateTime.Now.TimeOfDay.ToString());
        Console.WriteLine("Aplikasi telah running pada time \t" + DateTime.Now.TimeOfDay.ToString());     
        TcpListener tcpListener = new TcpListener(5);//kita menentukan berapa banyak clien yang bisa terkoneksi (5)->5 clien
        tcpListener.Start();
        Socket clientSocket = tcpListener.AcceptSocket();
        if (clientSocket.Connected)//jika client sudah terconnection
        {
            id++;
            //pemberitahuan jika clien sudah terkoneksi di ikuti waktu kapan dia terkoneksi
            Console.WriteLine("Client Telah terkoneksi \t" + DateTime.Now.TimeOfDay.ToString());
            NetworkStream myStream = new NetworkStream(clientSocket);
            System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(myStream);
            System.IO.StreamReader streamReader = new System.IO.StreamReader(myStream);
            string messageString = "Client " + id.ToString() + " Telah terkoneki";
            streamWriter.WriteLine(messageString);
            Console.WriteLine(messageString);
            streamWriter.Flush();
            messageString = streamReader.ReadLine();
            Console.WriteLine(messageString);
            streamReader.Close();
            myStream.Close();
            streamWriter.Close();
        }
        clientSocket.Close();
        Console.WriteLine("");   
        Console.ReadLine();
    }
}

[/code]
Penjelasan :
Seperti yang kita lihat basic server sangat simple. Satu-satunya hal yang harus kita lakukan adalah TcpListener seperti pada line:
[code] tcpListener.Start();[/code]
menunggu Sinyal Klien. Kemudian, ketika clientSocket Socket terkonek
[code]Socket clientSocket = tcpListener.AcceptSocket();[/code],
server dapat mengirim atau menerima pesan apapun melalui myStream NetworkStream.
[code]NetworkStream myStream = new NetworkStream(clientSocket); [/code]
Pada akhir kode server tidak lupa untuk menutup clientSocket Socket.
[code]streamReader.Close();   
             myStream.Close();   
             streamWriter.Close();   
         }   
clientSocket.Close(); [/code]
Dengan kata lain kita harus memutuskan klien yang terhubung sebelum mematikan server.

ok sekarang kita lihat code untuk clientnya ...

[code]using System;
using System.Text;
using System.Net.Sockets;
public class Simple_client
{
    static public void Main(string[] Args)
    {
                // Pesan hanya terlihat pada console clien
        // di sini kita memberitahukan abhwa program telah berjalan dan memberitahukan kapan program berjalan
        // dengan tambahan waktu + DateTime.Now.TimeOfDay.ToString());
        Console.WriteLine("Aplikasi Client telah running pada time \t" + DateTime.Now.TimeOfDay.ToString());
        TcpClient serverSocket;
        try
        {
            serverSocket = new TcpClient("localhost", 5);
            //pemberitahuan jika clien berhasil terkoneksi ke server di ikuti waktu kapan dia terkoneksi
            Console.WriteLine("Berhasil terkoneksi ke server \t" + DateTime.Now.TimeOfDay.ToString());
        }
        catch
        {   //Pemberitahuan saat client gagal terkoneksi ke server
            Console.WriteLine("Gagagl terkoneksi ke server pada {0}:999", "localhost");
            Console.WriteLine("");
            Console.ReadLine();
            return;
        }
        NetworkStream myStream = serverSocket.GetStream();
        System.IO.StreamReader streamReader = new System.IO.StreamReader(myStream);
        System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(myStream);
        try
        {
            // Baca pesan dari server dan tampilkan di console
            string messageString;
            messageString = streamReader.ReadLine();
            Console.WriteLine(messageString);
            streamWriter.WriteLine("Halo server gue berhasil terkoneksi ni !");
            Console.WriteLine("Halo server gue berhasil terkoneksi ni !");
            streamWriter.Flush();
        }
        catch
        {
            Console.WriteLine("Gagal Menerima dari Server");
        }
        myStream.Close();
        Console.WriteLine("");
        Console.ReadLine();
    }
}
[/code]

Dalam kode di atas kita lihat prosedur kebalikan seperti yang kita lihat pada TcpClient ServerSocket
[code]TcpClient serverSocket; [/code]
dan kemudian kita mencoba untuk terhubung ke aplikasi server. Perhatikan bahwa semua sambungan sedang berlangsung di localhost. Jadi jika koneksi berhasil maka klien dapat mengirim atau menerima pesan apapun melalui  NetworkStream myStream.
[code]NetworkStream myStream = serverSocket.GetStream(); [/code]
 
ini sreen shotnya :

  
 
( http://dcc-dp.org/berita93-tutorial basic tcp ip socket di csharp.html )

TCP/IP Tutorial 

TCP/IP atau Transmission Control Protocol/Internet Protocol

            TCP / IP (Transmission Control Protocol / Internet Protocol) adalah bahasa komunikasi dasar atau protokol Internet. Hal ini juga dapat digunakan sebagai protokol komunikasi di jaringan pribadi (baik intranet atau extranet ). Ketika Anda mengatur dengan akses langsung ke Internet, komputer Anda dilengkapi dengan salinan program TCP / IP seperti setiap komputer lain yang mungkin Anda mengirim pesan atau mendapatkan informasi dari juga memiliki salinan dari TCP / IP.

           TCP / IP adalah sebuah program dua-lapisan. Semakin tinggi lapisan, Transmission Control Protocol, mengelola assembling dari pesan atau file menjadi lebih kecil paket yang ditransmisikan melalui internet dan diterima oleh lapisan TCP yang reassembles paket ke pesan asli. Lapisan yang lebih rendah, Internet Protocol, menangani alamat bagian dari tiap paket sehingga sampai ke tujuan yang tepat. Setiap Gateway komputer pada jaringan memeriksa alamat ini untuk melihat mana untuk meneruskan pesan. Meskipun beberapa paket dari pesan yang sama yang diarahkan berbeda dari yang lain, mereka akan berkumpul kembali di tempat tujuan. TCP / IP menggunakan cliet / server model komunikasi di mana pengguna komputer (klien) permintaan dan memberikan layanan (seperti mengirim halaman web) oleh komputer lain (server) di jaringan. TCP / IP komunikasi terutama point-to-point, yang berarti setiap komunikasi dari satu titik (atau host komputer) dalam jaringan ke jalur atau host komputer. TCP / IP dan tingkat yang lebih tinggi aplikasi yang menggunakannya secara kolektif dikatakan "tanpa negara" karena masing-masing permintaan klien dianggap sebagai permintaan baru yang tidak terkait dengan salah satu sebelumnya (seperti percakapan telepon biasa yang memerlukan sambungan yang didedikasikan untuk durasi panggilan). Menjadi stateless membebaskan jalur jaringan sehingga setiap orang dapat menggunakannya terus menerus. (Perhatikan bahwa lapisan TCP sendiri tidak bernegara sejauh sebagai salah satu pesan yang bersangkutan. Koneksinya tetap di tempat sampai semua paket dalam pesan telah diterima.)

         Banyak pengguna internet yang akrab dengan protokol lapisan yang lebih tinggi aplikasi yang menggunakan TCP / IP untuk mendapatkan ke Internet. Ini termasuk World Wide Web Hypertext Transfer Protocol ( HTTP ), File Transfer Protocol (FTP), Telnet ( Telnet ) yang memungkinkan Anda logon ke komputer remote, dan Simple Mail Transfer Protocol ( SMTP ). Ini dan lain protokol sering dikemas bersama-sama dengan TCP / IP sebagai "suite."

           Pengguna komputer pribadi dengan sebuah telepon analog modem koneksi ke Internet biasanya mendapatkan ke Internet melalui Internet Protocol Garis Serial (SLIP) atau Protokol Point-to-Point ( PPP ). Protokol ini encapsulate paket IP sehingga mereka dapat dikirim melalui sambungan telepon dial-up ke modem penyedia akses itu.

              Protokol yang terkait dengan TCP / IP termasuk User Datagram Protocol ( UDP ), yang digunakan bukan TCP untuk tujuan khusus. Protokol lain yang digunakan oleh host komputer jaringan untuk bertukar router informasi. Ini termasuk Internet Control Message Protocol ( ICMP ), yang Interior Gateway Protokol ( IGP ), yang Exterior Gateway Protocol (EGP), dan Border Gateway Protocol ( BGP ).

( http://dq-online.com/index.php?option=com_content&view=article&id=54:tcp-ip-tutorial catid=50:network&Itemid=64 )

Tidak ada komentar:

Posting Komentar