Oleh: ppyton | Rabu, 16 November 2011 | 1 Komentar Kategori: Tutorial View 2083
|

halo all ketemu lagi bersama penulis rahmat ramadhan iriyanto aka jimmyromanticdevil.kali ini kita akan belajar Basic TCP/IP Socket di Csharp/C#
tapi sebelumnya mungkin sebagian dari kalian ad yang tau ap itu socket dan sebagian ad yang tidak tau ap itu socket ..
ok oleh karena itu kita berkenalan dulu dengan socket ... :)
Apa itu Socket ? / halo Socket saya ingin mengenal dirimu ...bisa kah kaumemperkenalkan dirimu ?? :))
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 :
Akhirnya kita berhasil membuat simple aplikasi TCP / IP Socket . :)
ok teman teman mungkin sampai sini sj dlu tutorial dari saya kl ad slh mohon maaf yah sy juga masih belajar :)
lets we share together ... :)
CMIIW : coment me if i am wrong .. :)
Special thanks to my refrensi :
MY big teacher GOOGLE ,Google transkate(untuk mentranslate sedikit kata yang gue kurang paham),wikipedia untuk pengethuan n penjelasan socket :) dan http://msdn.microsoft.com/en-us/library/sb27wehh.aspx atau http://www.csharp-examples.net/socket-send-receive/ untuk penjelasan library library socketnya .. :)
|