Языки программирования

Сокеты в С#

Сокет — это один конец двухстороннего канала связи между двумя программами, работающими в сети. Используя два сокета, можно передавать данные между разными процессами (локальными или удаленными).
Прежде, чем использовать сокет, его нужно открыть, задав надлежащие разрешения. Как только ресурс открыт, из него можно считывать данные и/или в него можно записывать данные. После его использования нужно вызвать метод Close() для его закрытия. Существует два типа сокетов:

Потоковый сокет

Потоковый сокет — это сокет с установленным соединением, состоящий из потока байтов, который может быть двунаправленным, то есть через такой сокет можно передавать и принимать данные.
Потоковый сокет гарантирует доставку передаваемых данных в целости и сохранности, он сохраняет последовательность данных. Данные сокеты используют в качестве транспортного протокола TCP, который контролирует доставку данных.

Дейтаграмные сокеты

Дейтаграмные сокеты не подразумевают установку соединения. Сообщение отправляется указанному сокету и на этом все. Если все хорошо, сообщение будет доставлено получателю, если нет, отправитель даже не узнает об этом.

Сырные сокеты

Задача таких сокетов заключается в обходе механизма, с помощью которого компьютер обрабатывает TCP/IP. Сырой сокет — это сокет, который принимает пакеты, обходит уровни TCP и UDP в стеке TCP/IP и отправляет непосредственно приложению.

Классы для работы с сокетами

MulticastOption — устанавливает значение IP-адреса для присоединения к IP-группе или для выхода из нее.
NetworkStream — реализует базовый класс сетевого потока, использующего для отправки и получения данных.
Socket — обеспечивает базовую функциональность приложения сокета.
SocketException — задает исключения при работе с сокетами.
TcpClient — данные класс построен на классе Socket, чтобы обеспечить TCP-обслуживание на более высоком уровне. Он предоставляет несколько методов для отправки и получения данных через сеть.
TcpListener — построен на низкоуровневом классе Socket. Его основное назначение — серверные приложения. Он ожидает входящие запросы на соединения от клиентов и уведомляет приложение о любых соединениях.
UdpClient — содержит методы для отправки и получения данных посредством протокола UDP.
Основной класс — это класс Socket. Он обеспечивает базовую функциональность для работы с сокетами. На его базе построены некоторые другие классы.

Члены класса Socket

Accept() — создает новый сокет для обработки входящего запроса на соединение.
AddressFamily — предоставляет семейство адресов сокета — значения из перечисления Socket.AddressFamily.
Available — возвращает объем доступных для чтения данных.
Bind() — связывает сокет с локальной конечной точкой для ожидания входящих запросов на соединение.
Blocking — дает или устанавливает значение, показывающее находится ли сокет в блокирующем режиме.
Close() — закрывает сокет.
Connect() — устанавливает соединение с удаленным узлом.
Connected — возвращает значение, показывающее, соединен ли сокет с удаленным узлом.
GetSocketOption() — возвращает значение SocketOption.
IOControl() — устанавливает для сокета низкоуровневые режимы работы.
Listen() — помещает сокет в режим прослушивания (ожидания). Используется только на сервере.
LocalEndPoint — сообщает локальную конечную точку.
Poll() — определяет состояние сокета.
ProtocolType — содержит тип протокола сокета.
Receive() — получает данные из сокета.
RemoteEndPoint — сообщает удаленную конечную точку сокета.
Select() — проверяет состояние одного или нескольких сокетов.
Send() — отправляет данные соединенному сокету.
SetSocketOption() — устанавливают опцию сокета.
Shutdown() — запрещает операции отправки и получения данных на сокете.
SocketType — содержит тип сокета.
Самоучитель по C#