Programowanie przez gniazda to schemat programowania, w którym gniazda są używane i manipulowane w celu utworzenia połączenia między oprogramowaniem. Gniazda służą do łączenia oprogramowania między różnymi komputerami lub w ramach tego samego komputera, dzięki czemu programy mogą udostępniać dane. Programowanie gniazd jest używane z komunikatorami, przeglądarkami internetowymi, programami do udostępniania plików i wszystkim, co zmusza komputer do łączenia się z systemem. Większość gniazd jest programowana automatycznie, ale niektóre systemy operacyjne (OS) przenoszą tę odpowiedzialność w ręce użytkownika.
Programowanie gniazd polega na użyciu listy poleceń do połączenia gniazda z jednego komputera do drugiego. Na przykład, aby komunikator działał, musi połączyć się z drugim komputerem. Do wykonania tego połączenia wykorzystywane jest gniazdo. Dzięki nawiązaniu połączenia oba komputery mogą teraz łączyć się ze sobą i rozmawiać ze sobą.
Programy peer-to-peer (P2P) są szczególnymi przypadkami, jeśli chodzi o programowanie gniazd. Większość programów działa jako klient lub serwer. Program P2P działa jak oba, dlatego użytkownicy mogą pobierać pliki od jednej osoby, podczas gdy pliki są pobierane od użytkownika w tym samym czasie.
Chociaż większość programowania gniazd jest używana do interakcji między dwoma komputerami, jest to również przydatne dla dwóch programów na tym samym komputerze. Znane jako przetwarzanie wzajemne, umożliwia jednemu programowi pobieranie informacji z innego programu i używanie ich. Na przykład, jeśli jeden program jest twórcą pokazu slajdów i potrzebuje informacji z programu wideo do odtwarzania wideo na slajdzie, wówczas tworzone jest gniazdo do połączenia programów pokazu slajdów i wideo. Przetwarzanie wzajemne jest powszechne, ale nie tak powszechne, jak używanie gniazd między dwoma komputerami.
Korzystając z programowania gniazd, programista i użytkownik muszą pamiętać, że gniazda są dwukierunkowe. Oznacza to, że oba komputery mogą ze sobą rozmawiać, a jednocześnie pobierać od siebie dane. Otwarcie komputera na inny system może być niebezpieczne, ponieważ druga strona będzie mogła przeprowadzić atak, jeśli jego użytkownik jest złośliwy. Jest to jednak rzadkie, a podłączenie gniazdka do innego systemu jest zwykle bezpieczne.
Gniazda są zwykle tworzone automatycznie w systemie operacyjnym lub przy ograniczonym programowaniu. W interfejsach systemu operacyjnego, w których wiersz poleceń jest często używany, użytkownik często będzie musiał ręcznie fałszować gniazda. Zmusza to użytkownika do znajomości podstawowego programowania gniazd, aby można było wykonać te ważne połączenia. Jeśli gniazdo nie zostanie utworzone, to komputer nie będzie mógł komunikować się z innymi systemami, co ogranicza użyteczność komputera.