Dasar Pemrograman Socket Dengan Java

by Agus Kurniawan 19. November 2011 09:13

cover_pcm_10

Pada edisi 10 (Oktober 2011) majalah PC Media, saya menulis dua artikel dan salah satunya adalah Dasar Pemrograman Socket Dengan Java.

Apa Itu Socket?

Socket adalah suatu abtraksi yang mana aplikasi dapat mengirim dan menerima data seperti sama halnya dengan membuka suatu file untuk dibaca dan ditulis pada tempat penyimpanan file. Socket memungkinkan untuk masuk kedalam jaringan dan berkomunikasi dengan aplikasi lain yang juga masuk kedalam jaringan yang sama. Informasi yang ditulis kedalam socket pada suatu aplikasi pada suatu mesin dapat dibaca oleh aplikasi lain pada mesin yang berbeda dan sebaliknya.
Socket dapat bekerja dibanyak protokol dan ilustrasi bagaimana socket berkomunikasi satu dengan lainnya dapat dilihat pada gambar 1. Pada artikel ini kita akan membahas socket yang diimplementasi pada protokol TCP/IP dan UDP/IP.


gambar1
Gambar 1. Ilustrasi komunikasi antar socket


Pengetahuan tentang socket merupakan pengetahuan wajib yang harus diketahui ketika kita membuat aplikasi berbasis jaringan. Oleh karena itu, mula-mula penulis akan menjelaskan bagaimana arsitektur socket pada platform Windows dan Linux.

Socket Pada Windows

Istilah socket pada platform Windows lebih dikenal dengan istilah Winsock. Winsock ini dibuat untuk standart interface programming TCP/IP pada semua versi dari Microsoft Windows termasuk Windows Server 2003/2008, Windows Vista/7, Windows XP, Windows 2000, Windows NT, Windows 98/95, Windows CE dan Windows 3.x. Keuntungan Winsock yang diciptakan oleh Microsoft antara lain:
1.    Menyediakan open standart API sehingga memudahkan dalam mengakses jaringan untuk segala platform operating system dalam lingkungan Microsoft Windows.
2.    Aplikasi yang dibuat oleh developer pada port BSD Socket dapat juga berjalan dalam operating system Windows.
3.    Memberikan kemudahan pada pemakai dan manager IT dalam menemukan pilihan yang dapat bekerja tanpa melakukan modifikasi terlalu banyak.
Motivasi untuk menciptakan Winsock untuk versi 2 terutama untuk menyediakan interface transport sebuah protocol-independent yang mempunyai kemampuan support jaringan termasuk komunikasi multimedia real-time. Disamping itu juga, Winsock 2 merupakan perbaikan dari Winsock sebelumnya dan mempunyai kemampuan lebih.
Pada gambar 2 merupakan arsitektur dari Window Socket. Sedangkan Winsock 2 mempunyai arsitektur yang lebih fleksibel yang support multiple protocol stacks, interfaces, dan service providers secara simultan. Pada gambar 2 juga terlihat alur dari aplikasi yang dibedakan dalam Winsock 2.0 dan Winsock 1.1 yang ditangani oleh file WS2_32.dll.


gambar2
Gambar 2. Arsitektur Winsock 2.0


Dengan model arsitektur diatas, maka para developer dan vendor dapat membuat aplikasi untuk mengakses jaringan melalui Winsock 2.DLL yang dapat bekerja dalam platform operating system Windows.

Socket Pada Linux

Sistem operasi Linux mengimplementasi standard Berkeley socket API yang awalnya diimplementasi pada BSD Unix. Secara untuk arsitektur socket pada network layer sistem operasi Linux dapat dilihat pada gambar 3.
gambar3
Gambar 3. Arsitektur umum socket pada Linux


Interface Berkeley socket mengijinkan sebuah program dapat membuka komunikasi ke suatu target mesin lainnya. Network Device Driver memungkinkan beberapa peralatan jaringan dapat digunakan pada suatu saat. Peralatan jaringan ini terlebih dulu didaftarkan pada sistem sesuai dengan tipe nya seperti Ethernet, PPP, X.25 dan sebagainya.

Mengenal Java Berbasis Jaringan

Pada saat artikel ini ditulis Java JDK yang dikembangkan oleh Sun Microsystem sudah mencapai versi 6 dan secara garis besar pembagian library Java dapat digambarkan sebagai berikut


gambar4
Gambar 4. Diagram Java API 6

Pada diagram Java API diatas terlihat begitu banyak sekali API dan buku ini akan fokus ke library Java dibagian Networking yang dikumpulkan dalam package java.net.

Lebih lengkapnya, pembaca dapat membacanya di majalah PC Media edisi Oktober 2011. Semoga berguna.

Tags:

Papers | Java

blog comments powered by Disqus

About Agus Kurniawan

Agus Kurniawan

For more detail about me click here [V]

Please entry your name into my guestbook [V]

If you want to contact me, please go here [V]

Go here for my professional services [V]

My Books

Arduino Pro Mini A Hands-On Guide for Beginner 

Arduino Pro Micro A Hands-On Guide for Beginner  Arduino Nano A Hands-On Guide for Beginner

Python and SQL Server Development  Coral Dev Board I/O Programming Using Python

Digi XBee3 Zigbee 3 Development Workshop  Microchip MPLAB Xpress Development Workshop

DFRobot Romeo V2 Development Workshop  Getting Started with Coral Dev Board

Arduino Sketch for ESP8266 Development Workshop  Internet of Things Projects with ESP32

Teensy LC Development Workshop  Arduino Sketch for STM8 Development Workshop

Sigfox Development with SiPy, LoPy4, FiPy  Sigfox Development with STM32 B-L072Z-LRWAN1

Arduino Sketch for STM32 Development Workshop  Arduino MKR ZERO Development Workshop

Administering and Developing Azure SQL Database  Pycom WiPy 3.0 Development Workshop

Getting Started with Ubuntu Core for Raspberry Pi 3  Practical Kotlin Programming

Arduino Sketch for ESP32 Development Workshop  Building Wireless Sensor Networks with ESP32 LoRa

Getting Started with ACKme Mackerel AMW004 Development  NodeMCU for ESP32 Development Workshop 

Arduino MKR WIFI 1010 Development Workshop  IOIO-OTG Development Workshop

MicroPython for STM32 Nucleo Technical Workshop  STM32 Nucleo-32 Development Workshop

Learn CloudFormation  SparkFun nRF52832 Development Workshop

LinkIt Smart 7688 and LinkIt Smart 7688 Duo Development Workshop  CircuitPython Development Workshop

MicroPython for BBC micro:bit Technical Workshop  RedBear Blend v2 Development Workshop

Realtek Ameba RTL8195 Technical Workshop  Practical Contiki-NG: Programming for Wireless Sensor Networks

ESPectro32 Technical Workshop STEMTera Development Workshop

BeagleBone Black Wireless Technical Workshop Arduino MKR GSM 1400 Development Workshop

Dragino LoRa Development Workshop Learning AWS IoT

Tessel 2 Development Workshop Raspberry Pi Compute Module 3 Technical Workshop

Vue.js Programming by Example Administering and Developing SQL Server 2017 for Linux

Arduino MKRFOX1200 Development Workshop  Intelligent IoT Projects in 7 Days

Teensy Development Workshop Teensy 3.5 and Teensy 3.6 Boards Edition OpenMV Development Workshop

ESPresso Lite V2.0 Development Workshop  MicroPython for ESP32 Development Workshop

Arduino FIO Development Workshop  Getting Started with Android Things for Raspberry Pi 3

Pycom WiPy 2.0 Development Workshop  XBee ZigBee Development Workshop

SparkFun ESP32 Thing Development Workshop Getting Started With BBC micro:bit

Getting Started With Raspberry Pi Zero W Espruino Pico Development Workshop

Getting Started with ASP.NET Core for OS X, Linux, and Windows  Arduino TIAN Development Workshop

SimpleLink Wi-Fi CC3200 LaunchPad Development Workshop  MicroPython for ESP8266 Development Workshop

Smart Internet of Things Projects  Arduino UNO WiFi Development Workshop

XBee Wi-Fi development workshop SparkFun Simblee BLE Development Workshop

Mengenal Microsoft Azure ML Getting Started with Windows 10 IoT Core for Raspberry Pi 3

Arduino and Genuino Zero Development Workshop Go and SQL Server Programming By Example

Arduino and Genuino MKR1000 Development Workshop  Mengenal Microsoft Azure IoT

Getting Started with Raspberry Pi 3 PHP and PostgreSQL Programming By Example

Arduino and Genuino 101 Development Workshop Getting Started with Raspberry Pi Zero

Getting Started with Arduino Wiring for Windows 10 IoT Core Getting Started with Wolfram Language and Mathematica for Raspberry Pi

Arduino Uno: A Hands-On Guide for Beginner Arduino Leonardo and Arduino Micro: A Hands-On Guide for Beginner

RedBearLab CC3200 Development Workshop The Photon Kit Development Workshop

Python Programming by Example Raspberry Pi LED Blueprints

Bluno Beetle Development Workshop BeagleBone Black Programming using Matlab

Arduino Programming using MATLAB Digispark USB Development Workshop

Near Field Communication (NFC) for Embedded Applications Arduino Development for OSX and iOS

SparkFun ESP8266 Thing Development Workshop Teensy Development Workshop

Getting Started with Windows 10 for Raspberry 2 NodeMCU Development Workshop

Getting Started with ASP.NET 5 for OS X, Linux, and Windows Getting Started with Windows Remote Arduino

Redis Programming by Example The Hands-on ARM mbed Development Lab Manual

Getting Started With STM32 Nucleo Development Getting Started with Windows IoT and Intel Galileo

Learning C by Example Getting Started with Raspberry Pi 2

Getting Started with Arduino and Go The Hands-on Arduino Yún Manual Lab

The Hands-on MEAN Lab Manual, Volume 1 Go Programming by Example

Getting Started with Scratch for pcDuino Raspberry Pi Wireless Networks

BeagleBone Black Programming by Example Database Programming Using R

Learning R in 120 Minutes The Hands-on Intel Edison Manual Lab

Getting Started with pcDuino3 TI ARM Cortex-M LaunchPad Programming by Example

Raspberry Pi I/O Programming using Python Getting Started with Intel IoT and Intel Galileo

Pemrograman Java Tingkat Lanjut PHP and MongoDB Programming By Example

ASP.NET SignalR Programming By Example KnockoutJS Programming by Example

Getting Started with Java ME Embedded 8 and Raspberry Pi XBee IEEE 802.15.4 Programming

Raspberry Pi System Programming for Beginner Backbone.js Programming By Example

PHP and SQL Server Programming By Example AngularJS Programming by Example

jQuery Programming by Example Getting Started with Arduino and Ruby

Raspberry Pi Command Line for Beginner Getting Started with Arduino and Python

MSP430 LaunchPad Programming TypeScript Programming by Example

Getting Started with Matlab Simulink and Arduino SQL Server for Node.js

Pocket Reference: Netduino for Beginner Database Programming using Matlab

Pocket Reference: Basic Sensors in Windows 8 Getting Started with Matlab Simulink and Raspberry Pi

Getting Started with Arduino and Java  Pocket Reference: Raspberry Pi Programming

Getting Started with Arduino and Matlab Getting Started with Arduino and .NET

Pocket Reference: Raspberry Pi Getting Started with Arduino and Node.js

MongoDB for VB.NET Panduan Praktis Windows Azure

Network Forensics: Panduan Analisis Dan Investigasi Paket Data Jaringan Menggunakan Wireshark Object-Relational Mapping (ORM): MongoDB, Mongoosejs and Node.js By Example

Nodejs Programming by Example MongoDB for by Example

Pemrograman Parallel Dengan MPI dan C Panduan Lengkap iPad 2 Untuk Pemula

Pemrograman Jaringan Dengan Java Aplikasi Pilihan iPad Untuk Anak-Anak

Buku lainnya [V]

Agus Kurniawan is Microsoft MVP (Most Valuable Professional)

Agus Kurniawan- Github Profile

Agus Kurniawan- Codeplex Profile

Follow Me

Follow agusk2010 on Twitter

Month List