Pemrograman socket adalah cara untuk menggunakan komponen/API (Application Programming Interface) socket untuk membuat sebuah aplikasi. Aplikasi socket berdasarkan pengiriman datanya umumnya terdiri dari dua kategori, yaitu :
1. Datagram socket (menggunakan UDP)
2. Stream socket (menggunakan TCP)
Terdapat perlakuan yang berbeda antara UDP dan TCP, Walaupun sama-sama berfungsi sebagai protokol pertukaran data. UDP tidak memerlukan proses koneksi terlebih dahulu untuk dapat mengirimkan data, paket-paket data yang dikirim UDP bisa jadi melalui rute yang berbeda-beda, sehingga hasil yang diterima bisa jadi tidak berurutan.
Contohnya jika aplikasi socket pengirim mengirimkan pesan 1, pesan 2, dan pesan 3, maka aplikasi socketpenerima belum tentu mendapatkan pesan yang berurutan di mulai dari pesan 1, pesan 2, dan diakhiri pesan 3. Bisa saja pesan 2, lebih dahulu diterima, menyusul pesan-pesan yang lain, atau berbagai kemungkinan yang lainnya. Bahkan dapat terjadi pesan yang dikirimkan tidak sampai ke penerima karena kegagalan pengiriman paket data.
Tidak demikian halnya dengan Stream socket yang menggunakan TCP. Jenis ini mengharuskan terjadinya koneksi terlebih dahulu, Kemudian mengirimkan paket-paket data secara berurutan, Penerima juga dijamin akan menerima data dengan urutan yang benar, dimulai dengan data yang pertama sampai data yang terakhir. TCP dapat menangani data yang hilang, rusak, terpecah, ataupun terduplikasi.
Dari sekilas perbedaan ini, kita dapat menarik kesimpulan bahwa aplikasi socket yang menggunakan TCP memerlukan pertukaran dua data yang valid. Sedangkan, aplikasi socket yang menggunakan UDP lebih memprioritaskan pada pengumpulan data.
Karena itu aplikasi socket dengan TCP sering diterapkan untuk aplikasi chat, transfer file, ataupun transaksi-transaksi penting. Sedangkan aplikasi dengan socket UDP cocok diterapkan untuk aplikasi monitoring jaringan,game online, dan aplikasi-aplikasi Broadcast.