You are on page 1of 18

LAPORAN PEMROGAMAN MIKROPROSESSOR

SOCKET PROGRAMMING

Disusun oleh:

Akhda Khairul Zadid


IK-2A 3.34.11.0.05

PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2013

I. 1. 2. 3. II. 1.

TUJUAN INSTRUKSIONAL KHUSUS Memahami tentang socket programming dalam C# Memahami socket sinkronous Memahami socket asinkronous DASAR TEORI Socket Socket adalah interface pada jaringan yang menjadi titik komunikasi antar komputer ataupun perangkat komputer yang berbasis protokol internet. Inilah yang menjadi dasar terjadinya komunikasi dan petukaran data pada jaringan internet. Socket Programming Socket programming adalah teknik pemrograman yang bertujuan untuk membuat suatu program yang dapat berinteraksi dengan program lain melalui jaringan komputer. Jenis jenis protokol Protokol yang sering digunakan dalam socket programming adalah TCP/IP dan UDP. 1. TCP /IP Adalah protokol yang paling umum digunakan di Internet. Alasan untuk ini adalah karena TCP menawarkan koreksi kesalahan. Ketika protokol TCP digunakan ada guaranteed delivery. yaitu jaminan bahwa packet akan terkirim. Hal ini disebabkan metode yang disebut flow control. Flow control menentukan kapan data harus dikirim kembali, dan menghentikan aliran data paket sebelumnya sampai berhasil ditransfer. Saat paket data dikirim, tabrakan dapat terjadi. Ketika ini terjadi, client akan meminta kembali paket dari server sampai seluruh paket lengkap dan identik dengan aslinya. 2. UDP Adalah protokol yang umum digunakan di Internet. Namun, UDP tidak pernah digunakan untuk mengirim data penting seperti halaman web, informasi database, dll. UDP umumnya digunakan untuk streaming audio dan video. Media streaming seperti Windows Media audio files (. WMA), Real Player (. RM), dan lain-lain menggunakan UDP karena menawarkan kecepatan! Alasan UDP lebih cepat daripada TCP adalah karena tidak ada bentuk flow control atau koreksi kesalahan. Data yang dikirim melalui Internet dipengaruhi oleh tabrakan, dan error akan muncul. Ingatlah bahwa UDP hanya berkaitan dengan kecepatan. Ini adalah alasan utama mengapa media streaming tidak berkualitas tinggi. Port Dalam protokol jaringan,TCP/IP. sebuah port adalah mekanisme yang mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan komputer lainnya dan program di dalam jaringan. Port dapat mengidentifikasikan aplikasi dan layanan yang menggunakan koneksi di dalam jaringan TCP/IP. Sehingga, port juga mengidentifikasikan sebuah proses tertentu di mana sebuah server dapat memberikan sebuah layanan kepada klien atau bagaimana sebuah klien dapat mengakses sebuah layanan yang ada dalam server. Port dapat dikenali

2.

3.

4.

5.

dengan angka 16bit (dua byte) yang disebut dengan Port Number dan diklasifikasikan dengan jenis protokol transport apa yang digunakan, ke dalam Port TCP dan Port UDP. Karena memiliki angka 16-bit, maka total maksimum jumlah port untuk setiap protokol transport yang digunakan adalah 65536 buah. Dilihat dari penomorannya, port UDP dan TCP dibagi menjadi tiga jenis, yakni sebagai berikut: 1. Well-known Port: yang pada awalnya berkisar antara 0 hingga 255 tapi kemudian diperlebar untuk mendukung antara 0 hingga 1023. Port number yang termasuk ke dalam well-known port, selalu merepresentasikan layanan jaringan yang sama, dan ditetapkan oleh Internet Assigned Number Authority (IANA). Beberapa di antara port-port yang berada di dalam range Well-known port masih belum ditetapkan dan direservasikan untuk digunakan oleh layanan yang bakal ada di masa depan. Sebagai contoh www atau http ada di port 80, sedangkan mail ada di port 25 2. Registered Port: Port-port yang digunakan oleh vendor-vendor komputer atau jaringan yang berbeda untuk mendukung aplikasi dan sistem operasi yang mereka buat. Registered port juga diketahui dan didaftarkan oleh IANA tapi tidak dialokasikan secara permanen, sehingga vendor lainnya dapat menggunakan port number yang sama. Range registered port berkisar dari 1024 hingga 49151 dan beberapa port di antaranya adalah Dynamically Assigned Port. 3. Dynamically Assigned Port: merupakan port-port yang ditetapkan oleh sistem operasi atau aplikasi yang digunakan untuk melayani request dari pengguna sesuai dengan kebutuhan. Dynamically Assigned Port berkisar dari 1024 hingga 65536 dan dapat digunakan atau dilepaskan sesuai kebutuhan. Dasar Socket Programming pada .Net Microsoft telah menyediakan libraty .Net yang digunakan untuk keperluan socket programming. Library tersebut terdapat dalam namespace System.Net.Sockets . Class Socket mendukung dua mode dasar komunikasi socket yaitu : synchronous dan asynchronous. Pada mode synchronous pemanggilan fungsi yang menyediakan operasi jaringan (seperti : send & receive) menunggu sampai operasi selesai sebelum mengembalikan kontrol pada program yang dipanggil. Pada mode asynchronous, pemanggilan tersebut dilakukan langsung. Inisialisasi Socket Sebelum anda dapat menggunakan socket untuk berkomunikasi, socket harus diinisialisasi sesuai dengan protokol dan informasi address yang akan digunakan. Constructor pada class Socket mempunya parameter paramenter yang mendefinisikan address family, socket type, dan protocol type yang digunakan ountuk melakukan koneksi. Contoh inisialiasi socket TCP/IP
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

Contoh inisialisasi socket UDP


Socket s = new Socket(AddressFamily.InterNetwork, ProtocolType.Udp); SocketType.Dgram,

Synchronous Socket Synchronous Socket Server Synchronous server socket men-suspend eksekusi aplikasi sampai connection request diterima pada socket. Metode ini tidak cocok untuk aplikasi yang membuat penggunaan resource yang berat pada operasinya, tetapi ini cocok untuk aplikasi untuk komunikasi data sederhana (berupa teks atau file kecil) seperti chatting. Setelah sebuah socket diset untuk "listen" pada suatu endpoint (ip address & port) menggunakan method Bind dan Listen, socket sdah siap untuk menerima request komunikasi menggunakan method Accept. Aplikasi akan di suspend sampai request koneksi diterima saat method Accept method dipanggil. Saat request koneksi diterima, method Accept mengembalikan (return) sebuah instance Socket yang berkaiatan dengan client yang terkoneksi. Synchronous Socket Client Synchronous client socket men-suspend aplikasi pada saat operasi jaringan diselesaikan. Untuk mengirim data, kirimkan byte array pada salah satu method send-data pada class Socket (method Send() & SendTo() ). Aynchronous Socket Aynchronous Socket Server Socket asynchronous server pada .Net menggunakan pola penamaan asynchronous, misalnya jika pada synchronous menggunakan method Accept(), pada asynchronous menggunakan method BeginAccept() dan EndAccept(). Demikian juga untuk mengirim data, menggunakan method BeginSend() dan EndSend(). Sebuah Socket asynchronous server membutuhkan method untuk memulai menerima koneksi dari jaringan, sebuah callback method untuk menangani request koneksi dan memulai menerima data dari jaringan. Aynchronous Socket Client Aynchronous Socket Client tidak men-suspend aplikasi saat menunggu operasi jaringan diselesaikan. Sebaliknya, menggunakan standar Framework asynchronous model pemrograman. Untuk memproses koneksi jaringan pada satu thread sementara aplikasi terus berjalan di thread aslinya. Soket Asynchronous cocok untuk aplikasi yang menggunakan resource jaringan besar atau yang tidak dapat menunggu untuk operasi jaringan untuk menyelesaikan sebelum melanjutkan. Penggunaan method sejalan dengan yang digunakan pada server yaitu menggunakan awalan "Begin" dan "End" untuk pengiriman dan penerimaan data. III. ALAT DAN BAHAN 1. Komputer atau laptop 2. Microsoft Visual Studio / C# 2010

IV.
1. 2. 3. 4. 5.

LANGKAH KERJA
Nyalakan Komputer / Laptop Buka aplikasi Microsoft Visual Studio / C# 2010 Kerjakan latihan latihan pada Job Sheet Buat projeck baru untuk praktek sokcet sinkronous untuk server dengan nama AkhdaSynSocketServer Berikut adalah kode programnya. /* NAMA : AKHDA KHAIRUL ZADID * NO : 3.34.11.0.05 * KELAS : IK 2 A * PROGRAM SOCKET SINKRON SERVER */ using System; using System.Text; using System.Net; using System.Net.Sockets; namespace AkhdaSynSocketServer { public class SynSocketServer { public static string data = null; public static void StartListening() { byte[] bytes = new Byte[1024]; IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); Console.WriteLine("#DATA INTERFACE KOMPUTER INI: "); Console.WriteLine("Host Name : " + ipHostInfo.HostName); Console.WriteLine("IP Address : "); IPAddress[] ipAddresses = ipHostInfo.AddressList; foreach (IPAddress ipAddr in ipAddresses) { Console.WriteLine(ipAddr.ToString()); } Console.Write("\nPilih IP Address yang digunakan : "); IPAddress ipAddress = IPAddress.Parse(Console.ReadLine()); Console.WriteLine("Masukkan Port yang digunakan : "); Int32 port = Int32.Parse(Console.ReadLine()); IPEndPoint localEndPoint = new IPEndPoint(ipAddress, port); Console.WriteLine(localEndPoint); Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try {

listener.Bind(localEndPoint); listener.Listen(10); while (true) { Console.WriteLine("\n#Untuk berhenti ketik : stop() pada input pesan"); Console.WriteLine("\t [menunggu koneksi...]"); Socket handler = listener.Accept(); Boolean stoplistening = false; while (stoplistening == false) { while (true) { bytes = new byte[1024]; int bytesRec = handler.Receive(bytes); data += Encoding.ASCII.GetString(bytes, 0, bytesRec); if(data.IndexOf("<EOF>") > -1) { break; } } data = data.Substring(0, data.Length - 5); Console.WriteLine("Pessan diterima (from : {0}) : {1}", handler.RemoteEndPoint.ToString(), data); Console.Write("Pesan balasan (to : {0}) : ", handler.RemoteEndPoint.ToString()); string pesan = Console.ReadLine(); if(pesan.Equals("stop()")) { stoplistening = true; } else { byte[] msg = Encoding.ASCII.GetBytes(pesan + "<EOF>"); handler.Send(msg); Array.Clear(msg, 0, msg.Length); data = ""; }

} } catch (Exception e) { Console.WriteLine(e.ToString()); }

} handler.Shutdown(SocketShutdown.Both); handler.Close();

Console.WriteLine("\nPress Enter to continue...");

} 6. 7.

Console.Read(); } public static int Main(String[] args) { StartListening(); return 0; }

Buat projek baru untuk praktek soket sinkronous bagi klien. Berikut adalah kode programnya. /* NAMA : AKHDA KHAIRUL ZADID * NO : 3.34.11.0.05 * KELAS : IK 2 A * PROGRAM SOCKET SINKRON KLIEN */ using System; using System.Net; using System.Net.Sockets; using System.Text; public class AkhdaSynSocketClient { public static string data = null; public static void StartClient() { //data buffer for data yang masuk byte[] bytes = new byte[1024]; //koneksi ke server try { IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); //menampilkan nama host Console.WriteLine("#INFORMASI KOMPUTER AND"); Console.WriteLine("HOST NAME : " + ipHostInfo.HostName); IPAddress[] ipAddresses = ipHostInfo.AddressList; Console.WriteLine("IP ADDRESS ANDA : "); foreach (IPAddress ipAddr in ipAddresses) { //menampilkan list ip address pada komputer Console.WriteLine(ipAddr); } //membangun koneksi ke server //menampilkan input ip address dan port server Console.WriteLine("#INPUT DATA SERVER TUJUAN"); Console.Write("IP ADDRESS TUJUAN : "); IPAddress ipAddress = IPAddress.Parse(Console.ReadLine()); Console.Write("Port Tujuan : "); Int32 port = Int32.Parse(Console.ReadLine()); IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);

Console.WriteLine("END POINT TUJUAN ANDA : " + remoteEP); //inisialisasi socket tcp Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //mengkoneksikan dengan end point server. menggunakan try & catch try { sender.Connect(remoteEP); Console.WriteLine("\t ...terkoneksi ke [0]", sender.RemoteEndPoint.ToString()); //input pesan yang akan dikirim Console.WriteLine("\nINPUT PESAN YANG AKAN DIKIRIM"); Console.WriteLine("UNTUK BERHENTI KETIK : stop()"); Boolean stopKirimPesan = false; while (stopKirimPesan == false) { Console.Write("pesan (to {0}): ", sender.RemoteEndPoint.ToString()); String pesan = Console.ReadLine(); if (pesan.Equals("stop()")) { stopKirimPesan = true; } else { //encode data string menjadi byte array byte[] msg = Encoding.ASCII.GetBytes(pesan + "<EOF>"); //kirim data melalui socket int byteSent = sender.Send(msg); //terima balasan dari server while (true) { bytes = new byte[1024]; int bytesRec = sender.Receive(bytes); data += Encoding.ASCII.GetString(bytes, 0, bytesRec); if (data.IndexOf("<EOF>") > -1) { break; } } Console.WriteLine("Pesan diterima (from{1}) = {0}", data, sender.RemoteEndPoint.ToString()); data = null; } } //release socket sender.Shutdown(SocketShutdown.Both); sender.Close();

} catch (Exception e) { Console.WriteLine(e.ToString()); Console.WriteLine("PRESS ANY KEY TO EXIT"); Console.ReadKey(); }

} catch (ArgumentException ane) { Console.WriteLine("ArgumentNullException : {0}", ane.ToString()); Console.WriteLine("PRESS ANY KEY TO EXIT"); Console.ReadKey(); } catch (SocketException se) { Console.WriteLine("SocketException : {0}", se.ToString()); Console.WriteLine("PRESS ANY KEY TO EXIT"); Console.ReadKey(); } catch (Exception e) { Console.WriteLine("ArgumentNullException : {0}", e.ToString()); Console.WriteLine("PRESS ANY KEY TO EXIT"); Console.ReadKey(); }

Console.WriteLine("...[koneksi sudah dihentikan]"); Console.WriteLine("PRESS ANY KEY"); Console.ReadKey();

} 8. 9.

//main method public static int Main(String[] args) { StartClient(); return 0; }

Buat projek baru untuk praktek soket asinkronous bagi server. Berikut adalah kode program nya. /* NAMA : AKHDA KHAIRUL ZADID * NO : 3.34.11.0.05 * KELAS : IK 2 A * PROGRAM SOCKET ASINKRON SERVER */ using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class StateObject {

} public class AkhdaAsynSocketServer { //thread signal public static ManualResetEvent allDone = new ManualResetEvent(false); public static string ipadd; public static Int32 port; public AkhdaAsynSocketServer() { } public static void StartListening() { //data buffer for incoming data byte[] bytes = new byte[1024]; Console.WriteLine("#DATA INTERFACE KOMPUTER IN"); Console.Write("\nHOSTNAME : " + Dns.GetHostName().ToString()); IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); Console.WriteLine("IP ADDRESS"); for (int i = 0; i < ipHostInfo.AddressList.Length; i++) { Console.WriteLine(" [" + i + "]. " + ipHostInfo.AddressList[i]); } Console.Write("\n#INPUT DATA END POINT UNTUK SERVER"); Console.Write("PILIH IP YANG DIGUNAKAN : "); ipadd = Console.ReadLine(); Console.Write("MASUKAN PORT YANG DIGUNAKAN : "); port = Int32.Parse(Console.ReadLine()); IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(ipadd), port); Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Boolean stopListen = false; while (stopListen == false) { try { listener.Bind(localEndPoint); listener.Listen(100); while (true) {

//client socket public Socket workSocket = null; //size of receive buffer public const int BufferSize = 1024; //receive buffer public byte[] buffer = new byte[BufferSize]; //receive data string public StringBuilder sb = new StringBuilder();

allDone.Reset(); Console.WriteLine("\n[menunggu koneksi] ..."); listener.BeginAccept( new AsyncCallback(AcceptCallback), listener); } allDone.WaitOne();

} public static void AcceptCallback(IAsyncResult ar) { allDone.Set(); Socket listener = (Socket)ar.AsyncState; Socket handler = listener.EndAccept(ar); StateObject state = new StateObject(); state.workSocket = handler; handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallBack), state);

} Console.WriteLine("\nPress enter"); Console.Read();

} catch (Exception e) { Console.WriteLine(e.ToString()); }

public static void ReadCallBack(IAsyncResult ar) { string content = string.Empty; StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; int byteRead = handler.EndReceive(ar); if (byteRead > 0) { state.sb.Append(Encoding.ASCII.GetString( state.buffer, 0, byteRead)); content = state.sb.ToString(); if (content.IndexOf("<EOF>") > -1) { content = content.Substring(0, (content.Length - "<EOF>".Length)); Console.Write("pesan diterima (dari [0]) : [1]", handler.RemoteEndPoint.ToString(), content); string balasan = "[pesan anda telah diterima]"; Send(handler, balasan); } else

{ }

handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallBack), state);

private static void Send(Socket handler, String data) { byte[] byteData = Encoding.ASCII.GetBytes(data); handler.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), handler);

private static void SendCallback(IAsyncResult ar) { try { Socket handler = (Socket)ar.AsyncState; int bytesSent = handler.EndSend(ar); Console.WriteLine("SEnd {0} bytes to client.", bytesSent); handler.Shutdown(SocketShutdown.Both); handler.Close();

} catch (Exception e) { Console.WriteLine(e.ToString()); }

public static int Main(String[] args) { StartListening(); return 0; }

10. 11.

Kemudian buat projek baru untuk praktek soket asinkronous bagi klien. Berikut adalah kode program nya. /* NAMA : AKHDA KHAIRUL ZADID * NO : 3.34.11.0.05 * KELAS : IK 2 A * PROGRAM SOCKET ASINKRON UNTUK KLIEN */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets;

using System.Threading; namespace AkhdaAsynSocketClient { public class StateObject { public Socket workSocket = null; public const int BufferSize = 256; public byte[] buffer = new byte[BufferSize]; public StringBuilder sb = new StringBuilder(); } public class AsynchronousClient { private static ManualResetEvent connectDone = new ManualResetEvent(false); private static ManualResetEvent sendDone = new ManualResetEvent(false); private static ManualResetEvent receiveDone = new ManualResetEvent(false); private static String response = string.Empty; public static string ipadd; public static Int32 port; private static void StartClient() { String pesan; try { Console.WriteLine("#data Interface Komputer ini"); Console.WriteLine("\nHostname : " + Dns.GetHostName().ToString()); IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); Console.WriteLine("IP Address : "); for (int i = 0; i < ipHostInfo.AddressList.Length; i++) { Console.WriteLine(" [" + i + "]. " + ipHostInfo.AddressList[i]); } Console.WriteLine("\n#INPUT data End Point Server yang dituju"); Console.Write("PILIH IP SERVER:"); ipadd = Console.ReadLine(); Console.WriteLine("masukan port server: "); port = Int32.Parse(Console.ReadLine()); IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ipadd), port); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine("#input pesan"); Console.WriteLine("#input pesan Stop() untuk berhenti "); client); client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback),

connectDone.WaitOne(); Console.Write("pesan (to : {0}): ", client.RemoteEndPoint.ToString()); pesan = Console.ReadLine(); send(client, (pesan + "<EOF>")); sendDone.WaitOne(); Receive(client); receiveDone.WaitOne(); Console.WriteLine("pesan diterima (from {0} ) : {1}", client.RemoteEndPoint, response); Console.WriteLine("press any key to exit"); Console.ReadKey(); client.Shutdown(SocketShutdown.Both); client.Close();

} catch (Exception e) { Console.WriteLine(e.ToString()); Console.WriteLine("press any key to exit"); Console.ReadKey(); }

private static void ConnectCallback(IAsyncResult ar) { try { Socket client = (Socket)ar.AsyncState; client.EndConnect(ar); Console.WriteLine("socket connected to {0}", client.RemoteEndPoint.ToString()); connectDone.Set(); } catch (Exception e) { Console.WriteLine(e.ToString()); Console.WriteLine("press any key to exit"); Console.ReadKey(); }

} private static void Receive(Socket client) { try { StateObject state = new StateObject(); state.workSocket = client;

client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } catch (Exception e) { Console.WriteLine(e.ToString()); Console.WriteLine("press any key to exit"); Console.ReadKey(); } } private static void ReceiveCallback(IAsyncResult ar) { try { StateObject state = (StateObject)ar.AsyncState; Socket client = state.workSocket; int bytesRead = client.EndReceive(ar); if (bytesRead > 0) { state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead)); client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } else { if (state.sb.Length > 1) { response = state.sb.ToString(); } receiveDone.Set(); } } catch (Exception e) { Console.WriteLine(e.ToString()); Console.WriteLine("press any key to exit"); Console.ReadKey(); } } private static void send(Socket client, string data) { byte[] byteData = Encoding.ASCII.GetBytes(data); client.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), client); } private static void SendCallback(IAsyncResult ar) { try

Socket client = (Socket)ar.AsyncState; int bytesSent = client.EndSend(ar); Console.WriteLine("sent {0} byte to server.", bytesSent); sendDone.Set();

} public static int Main(String[] args) { StartClient(); return 0; }

} catch (Exception e) { Console.WriteLine(e.ToString()); Console.WriteLine("press any key to exit"); Console.ReadKey(); }

V.

TUGAS Coba Jalankan project Server dan Client dengan teman sebelah anda, salah satu menjadi server dan salah satu menjadi client. Jika sudah berbasil bergaintianlah (tukar posisi server / client), untuk memastikan program yang anda buat dua2nya telah berhasil. 1. Aturlah IP address kedua komputer agar satu kelas. 2. Kemudian ping komputer 2

3. Masuklah ke program socket sinkron untuk server dari visual basic seperti berikut ini, dan lakukan lah chatting dengan komputer 2.

4. Masuklah ke program AkhdaAsynSocketServer untuk menjalankan program server asinkronous. Ping komputer 2 seperti pada langkah nomor 2. 5. Kemudian jalankan programnya seperti berikut.

6. Masuklah ke program AkhdaSynSocketClient untuk menjalankan program klien nya. Ping komputer 2 seperti pada langkah nomor 2. 7. Kemudian jalankan program nya seperti dibawah ini .

8. Masuklah ke program AkhdaSynSocketServer untuk menjalankan program server. Ping komputer 2 seperti langkah nomor 2.

9. Kemudian jalankan programnya seperti di bawah ini.

VI.

KESIMPULAN 1. Socket adalah interface pada jaringan yang menjadi titik komunikasi antar komputer ataupun perangkat komputer yang berbasis protokol internet. 2. Untuk terkoneksi antar komputer diperlukan alamat IP yang berada pada satu kelas yang sama. 3. Synchronous server socket men-suspend eksekusi aplikasi sampai connection request diterima pada socket sedangkan Synchronous client socket mensuspend aplikasi pada saat operasi jaringan diselesaikan. 4. Pada asynchronous menggunakan method BeginAccept() dan EndAccept(). Demikian juga untuk mengirim data, menggunakan method BeginSend() dan EndSend() 5. Socket asynchronous server membutuhkan method untuk memulai menerima koneksi dari jaringan sedangkan Asynchronous Socket Client tidak mensuspend aplikasi saat menunggu operasi jaringan diselesaikan.

You might also like