Pengetahuan Dasar Network Programming (socket programming)

Network programming perlu kita pelajari sebab microcontroller   yg ada  sekarang selain berkomunikasi dgn serial RS232/rs485  juga sudah banyak yang menggunakan komunikasi  jaringan komputer/ LAN dan internet.  Sehingga dengan begitu microcontroller bisa diakses/dikendalikan dari PC lewat LAN  ataut internet atau istilah kerennya iot , internet of thing.

Control via internet

Network Layer

Layer network

Gambar dibawah ini untuk mengingatkan kembali, bagaimana paket data/pesan mesti melalui  lapisan lapisan  supaya  sampai ke tujuan.

network Layer

Untuk sampai ketujuan pesan (paket data) yg kita kirim harus melalui beberapa tahap/layer:
– Lapisan aplikasi : aplikasi  FTP, SMTP, HTTP  : aplikasi chating ,catur online, mozilla dll
-Lapisan transport: process-process data transfer yaitu  TCP dan  UDP
-Lapisan Internet:  membuat rute   datagrams dari  sumber ke tujuan : IP digunakan mencari  rute
-Lapisan Network Interface: data transfer PPP, Ethernet
-Lapisan Phisik:  pengiriman bit per bit  (5 volt atau o volt)
 untuk lebih ringkasnya lihat gambar berikut:
 tcpnetworkdari gambar diatas dpt dijelaskan bahwa untuk sampai ke komputer yg dituju  paket data menggunakan  alamat IP dan untuk mencapai aplikasi yg dituju menggunakan  nomor port  , kombinasi keduanya di sebut socket.
Untuk lebih jelasnya akan dijelaskan dibawah ini

jika Surat/paket ditujukan ke alamat Kontrakan,  perlu no pintu kan?

jika kita ingin mengirim surat ke seseorang yg tinggal di sebuah rumah kontrakan dgn 1000 pintu:-),  maka kita perlu alamat rumah kontrakan dan nomor pintu si penerima , karena  kontrakan  yg dituju dihuni   beberapa orang. Jika  hanya alamat rumah kontrakan saja  maka surat tdk akan sampai kepada orang yg dituju.  nah socket itu ibarat gabungan  alamat kontrakan dan  no pintu

alamat rumah kontrakan  = IP address

no pintu kontrakan =  nomor  port

 

jadi Apa itu  Socket ?  : untuk mencapai tujuan perlu alamat jelas……

Socket adalah gabungan alamat ip dan nomor port.

socket

Berikut ini  contoh aplikasi yg berkomuniaksi lewat LAN atau internet dlm kehidupan sehari hari:

Ada 2 orang yang sedang chating  sambil chating kedunya juga bermain program catur online .

contoh 2 aplikasi network    mempunyai no port berbeda

Untuk  mencapai tujuan,paket  data masing masing aplikasi mempunyai alamat PC  yg dituju dan alamat aplikasi yg dituju.  Alamat PC berupa IP adress dan alamat aplikasi (prosses) berupa nomor port (port yang dimaksud disini bukan port yg ada di microcontroller ).    Kombinasi  IP adress dan nomor port  disebut socket.  Aplikasi dalam contoh gambar di atas yaitu program Catur online  dan Chating

Socket = alamat IP + alamat aplikasi (port)

 

Keterangan ttg Nomor Port:
• Nomor Port  terdiri dari  16 bit integer  :  0 ~ 65,535.
• Server harus menetapkan sebuah nomor port.
• Client program  menentukan  dirinya sebuah epheral nomor port  epheral.
• IANA (Internet Assigned Number Authority)  membagi nomor port
menjadi  3 :
1. no Port  0 sampai  1023 , ditetapkan dan di control oleh
IANA. misal:  no port 23 untuk FTP, 25  untuk  SMTP dan 80 untuk HTTP.
2.nomor port  1024  sampai 49,151   tidak dicontrol oleh  IANA,
tapi dapat di tetapkan penggunaanya oleh IANA.
3. nomor port dinamis 49,152  sampai  65,535  dapat digunakan  untuk proses apa saja disebut juga  epheral port.

Client-Server  :  siapa yang mulai  meminta dilayani , siapa yg melayani..

Jika ada 2 aplikasi yg saling berkomunikasi  maka salah satu aplikasi harus ada yg  memulai dan yg lain menunggu / siap merespon  komunikasi. fihak yg aktif memulai di sebut sebagai client dan fihak yg  passive menunggu (siap merespon/melayani) disebut server.

jadi yang dimaksud client dan server  komunikasi jaringan adalah sebuah aplikasi/program  bukan berupa  hardware .

Karakteristik aplikasi Client
• Diaktifkan oleh user.
• Dijalankan di lokal komputer
• Berinisiatif  sebagai fihak yang memulai  menghubungi server
• Tidak perlu  special hardware atau OS khusus.

Karakteristik aplikasi  Server
• dapat melayani banyak client dalam satu saat.
• program otomatis aktif ketika komputer dinyalakan dan siap melayani permintaan client.
• berjalan di komputer yg disharing( bukan personal komputer).
• Pasive menunggu di kontak oleh client.
• membutuhkan powerful hardware dan OS khusus (misal windows server 2008),  karena harus melayani banyak client.

TCP  atau UDP :  pesan harus sampai  atau yang penting pesan sudah ku sampaikan…

Pesan yang akan kita kirim apakah harus sampai ke tujuan atau yg penting sudah kita kirim sampai atau tdk , tdk terlalu penting artinya ada kemungkinan pesan tdk diterima .

jika pesan harus (wajib) sampai ke si penerima maka kita pilih TCP

jika pesan tdk harus sampai, atau ada kemungkinan tdk diterima kita pilih UDP.

antara TCP dan UDP ada kekurangan dan kelebihannya masing-masing penggunaanya tergantung kebutuhan tiap aplikasi.

TCP mempunyai  transport layer  identitas  6 dan  UDP : 17

Kalau boleh saya umpamakan pesan dgn TCP itu seperti menghubungi orang lain  dgn   handphone   pasti terhubung atau tidak sama sekali.

Kalau UDP itu seperti menghubungi orang2 dengan speaker Toa di mesjid , Bgini contohnya “kepada bapak2 pengurus DKM harap kumpul dimesjid akan ada rapat malem ini”.  Kita tidak tahu pesan  pengumuman tsb sampai atau tdk , krn bapak2 yg dimaksud  mungkin ada yg di rumah atau  ada yg masih  di kantor.

UDP

UDP

TCP :

TCP

penggunaan socket dlm jaringan

Mekanisme Komunikasi antara Client  dan Server 

Jika data bebentuk Stream (TCP)

komunikasi antara client server

Proses komunikasi Client server protokol  TCP  pada  pemrograman C# :

client server TCP dgn C#

Jika menggunakan Datagram (UDP)

mekanisme protokol UDP

Contoh Pemrograman Network dengan C#

Contoh Code Client UDP

kolom alamat  IP Host atau server  jika server berada  dlm 1 PC dgn client isi dgn localhost atau 127.0.0.1

using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;

private void button1_Click(object sender, System.EventArgs e)
{
UdpClient udpClient = new UdpClient();
udpClient.Connect(tbHost.Text, 8080);
Byte[] sendBytes = Encoding.ASCII.GetBytes(“Hello World?”);
udpClient.Send(sendBytes, sendBytes.Length);
}

Contoh Code Server UDP

.

using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;

public void serverThread()
{
UdpClient udpClient = new UdpClient(8080);
while(true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any,0);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
lbConnections.Items.Add(RemoteIpEndPoint.Address.ToString() + “:” +returnData.ToString());
}
}

private void Form1_Load(object sender, System.EventArgs e)
{

Thread thdUDPServer = new Thread(new ThreadStart(serverThread));
thdUDPServer.Start();
}

http://www.atmel.com/Images/doc2396.pdf

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

Posted on 15/03/2012, in Dasar Pemrograman. Bookmark the permalink. 14 Comments.

  1. Terimakasih Artikelnya sangat bermanfaat, saya jadi tambah wawasan tentang arduino

  2. Mantap mas, bahasanya mudah dicerna, saya simpan ni utk dibaca offline

  3. Pengetahuan yang bermanfaat, izin saya sebar ya kawan

  4. Bersemangat mencoba..
    kalau di delphi tak apa kan kak….
    soalnya saya pernah baca juga katanya di ditu bisa di delphi …
    terima kasih..

  5. bersemangat mencoba…tapi aku di delphi ni kak…
    mungkinn bila ada keluhan mohon di bantu ya..

  6. Mantap mas. Bhsnya mudah saya cerna. :)

  7. waroknggalek

    numpang tanya pak? :)
    misalnya sistem di atas menggunakan audrino. kira2 bisa membeli dimana dan berapa harga? termasuk juga referensi pengggunaan sehingga lebih praktis dan bisa optimal.

    saya menggunakan bahasa C untuk membuat sistem seperti di atas. tetapi dengan sistem client — server — client. yang menjadi kesulitan bagi saya adalah pada elektronikanya. mohon bimbingan.

    salam

  8. mas saya mau tanya,, jika saya ingin membuat aplikasi chating via jaringan dengan udp atau tcp apakah harus membuat 2 buah aplikasi, yang satu sebagai client yang satu lagi sebagai server ? Tidak bisakah hanya satu aplikasi saja dimana didalamnya sudah terdapat client dan server sekaligus, mohon penjelasannya mas,, saya masih newbie di masalah seperti ini,, thanx :)

    • bisa bisa saja nanti dibuat pilihan pas install mau install sbg server atau client .
      yg penting mekanisme client-server tetep berjalan yaitu ada 1 host sebagai server yang lain sebagai client.

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: