В области компьютеризации понятие программирования сетевых задач или иначе называемого сетевого программирования (), довольно сильно схожего с понятиями программирование сокетов и клиент-серверное программирование, включает в себя написание компьютерных программ, взаимодействующих с другими программами посредством компьютерной сети.

Программа или процесс, инициирующие установление связи, называются клиентским процессом, а программа, ожидающая инициации связи, называется серверным процессом. Клиентский и серверный процессы вместе образуют распределённую систему. Связь между клиентским и серверным процессами может быть или (как например, TCP-протокол, устанавливающий виртуальное соединение или сеанс), или (на основе UDP-датаграмм).

Программа, которая может функционировать и как клиент и как сервер, основывается на одноранговой связи.

Сокеты обычно реализуются библиотекой интерфейса программирования приложений (API), как например, сокеты Беркли, впервые представленные в 1983 году. Большинство реализаций основаны на сокетах Беркли, например, Winsock, представленный в 1991 году. Существуют и другие реализации API сокетов, например, Интерфейс транспортного уровня (TLI) на основе STREAMS.

Ниже следуют примеры функций или методов, обычно реализуемые библиотекой API: socket() создает новый сокет определённого типа, идентифицируемый при помощи целого числа, после чего выделяет ему системные ресурсы. bind(), как правило, используется на серверной стороне; ассоциирует сокет с адресной структурой сокетов, то есть определённым номером локального порта и IP-адресом. listen() используется на стороне сервера; переводит TCP-сокет в режим прослушивания. connect() используется на клиентской стороне; привязывает номер незанятого локального порта к сокету. В случае с TCP-сокетом, вызывает попытку установить новое TCP-соединение. accept() используется на стороне сервера. Данная функция принимает полученную попытку создания нового TCP-соединения от удаленного клиента и создает новый сокет, ассоциированный с парой сокетных адресов этого соединения. send() и recv() или write() и read() или recvfrom() и sendto() используются для отправки и получения данных к/от удалённого сокета. close() вызывает освобождение системных ресурсов, выделенных сокету. В случае TCP, соединение завершается.

См. также Межпроцессное взаимодействие (IPC)

Примечания

Литература Stevens, Richard. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9 Нечипорук А.М., Баринов А.В. Сетевое программирование. От основ до приложений Питер, 2025. ISBN 978-5-4461-4236-1

Ссылки Руководство по сетевому программированию от Beej Networking Basics — основы работы сетей с точки зрения Java

Категория:Программирование Категория:Межпроцессное взаимодействие Категория:Компьютерные сети