Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Класс Socket

 

Опубликовано: Октябрь 2016

Реализует интерфейс сокетов Беркли.

Пространство имен:   System.Net.Sockets
Сборка:  System (в System.dll)


public class Socket : IDisposable

ИмяОписание
System_CAPS_pubmethodSocket(AddressFamily, SocketType, ProtocolType)

Инициализирует новый экземпляр Socket с использованием заданного семейства адресов, тип сокета и протокол.

System_CAPS_pubmethodSocket(SocketInformation)

Инициализирует новый экземпляр Socket класса, используя указанное значение, возвращаемое из DuplicateAndClose.

System_CAPS_pubmethodSocket(SocketType, ProtocolType)

Инициализирует новый экземпляр Socket класса, используя указанный тип сокета и протокол.

ИмяОписание
System_CAPS_pubpropertyAddressFamily

Возвращает семейство адресов Socket.

System_CAPS_pubpropertyAvailable

Возвращает значение, указывающее количество полученных из сети и доступных для чтения данных.

System_CAPS_pubpropertyBlocking

Возвращает или задает значение, указывающее, является ли Socket находится в режиме блокировки.

System_CAPS_pubpropertyConnected

Возвращает значение, указывающее, является ли Socket подключен к удаленному узлу, начиная с последнего Send или Receive операции.

System_CAPS_pubpropertyDontFragment

Возвращает или задает Boolean значение, указывающее, является ли Socket позволяет датаграмм Internet Protocol (IP), фрагментация.

System_CAPS_pubpropertyDualMode

Возвращает или задает Boolean значение, указывающее, является ли Socket является двумя режимами сокета, используемого для IPv4 и IPv6.

System_CAPS_pubpropertyEnableBroadcast

Возвращает или задает Boolean значение, указывающее, является ли Socket могут отправлять или получать широковещательные пакеты.

System_CAPS_pubpropertyExclusiveAddressUse

Возвращает или задает Boolean значение, указывающее, является ли Socket позволяет только одному процессу привязки к порту.

System_CAPS_pubpropertyHandle

Возвращает дескриптор операционной системы для Socket.

System_CAPS_pubpropertyIsBound

Возвращает значение, указывающее, является ли Socket привязан к определенные локальные порты.

System_CAPS_pubpropertyLingerState

Возвращает или задает значение, указывающее, является ли Socket задерживать закрытие сокета при попытке отправки всех отложенных данных.

System_CAPS_pubpropertyLocalEndPoint

Возвращает локальную конечную точку.

System_CAPS_pubpropertyMulticastLoopback

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

System_CAPS_pubpropertyNoDelay

Возвращает или задает Boolean значение, указывающее, является ли поток Socket использует алгоритм Nagle.

System_CAPS_pubpropertySystem_CAPS_staticOSSupportsIPv4

Указывает, поддерживает ли базовая операционная система и сетевые адаптеры протокол IP версии 4 (IPv4).

System_CAPS_pubpropertySystem_CAPS_staticOSSupportsIPv6

Указывает, поддерживает ли базовая операционная система и сетевые адаптеры протокол IP версии 6 (IPv6).

System_CAPS_pubpropertyProtocolType

Возвращает тип протокола Socket.

System_CAPS_pubpropertyReceiveBufferSize

Возвращает или задает значение, указывающее размер приемного буфера для Socket.

System_CAPS_pubpropertyReceiveTimeout

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

System_CAPS_pubpropertyRemoteEndPoint

Возвращает удаленную конечную точку.

System_CAPS_pubpropertySendBufferSize

Возвращает или задает значение, указывающее размер буфера отправки из Socket.

System_CAPS_pubpropertySendTimeout

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

System_CAPS_pubpropertySocketType

Возвращает тип службы Socket.

System_CAPS_pubpropertySystem_CAPS_staticSupportsIPv4

Устарело. Возвращает значение, указывающее, является ли поддержка IPv4 доступна и включена на текущем узле.

System_CAPS_pubpropertySystem_CAPS_staticSupportsIPv6

Устарело. Возвращает значение, указывающее, поддерживает ли платформа IPv6 для некоторых устаревших Dns члены.

System_CAPS_pubpropertyTtl

Возвращает или задает значение, указывающее значение времени жизни (TTL) для пакетов протокола Интернета (IP), отправленных Socket.

System_CAPS_pubpropertyUseOnlyOverlappedIO

Указывает, является ли сокет режим следует использовать только перекрывающегося ввода-вывода.

ИмяОписание
System_CAPS_pubmethodAccept()

Создает новый Socket для заново созданного подключения.

System_CAPS_pubmethodAcceptAsync(SocketAsyncEventArgs)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

System_CAPS_pubmethodBeginAccept(AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

System_CAPS_pubmethodBeginAccept(Int32, AsyncCallback, Object)

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

System_CAPS_pubmethodBeginAccept(Socket, Int32, AsyncCallback, Object)

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

System_CAPS_pubmethodBeginConnect(EndPoint, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

System_CAPS_pubmethodBeginConnect(IPAddress, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Узел задается объектом IPAddress и номером порта.

System_CAPS_pubmethodBeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Узел задается массивом IPAddress и номером порта.

System_CAPS_pubmethodBeginConnect(String, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Узел задается именем узла и номером порта.

System_CAPS_pubmethodBeginDisconnect(Boolean, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для отключения от удаленной конечной точки.

System_CAPS_pubmethodBeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Начинает асинхронный прием данных из подключенного Socket.

System_CAPS_pubmethodBeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Начинает асинхронный прием данных из подключенного Socket.

System_CAPS_pubmethodBeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Начинает асинхронный прием данных из подключенного Socket.

System_CAPS_pubmethodBeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Начинает асинхронный прием данных из подключенного Socket.

System_CAPS_pubmethodBeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Начинает выполнение асинхронного приема данных с указанного сетевого устройства.

System_CAPS_pubmethodBeginReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Начинает выполнение асинхронного приема указанное число байтов данных в указанное место буфера данных, используя указанный SocketFlags, и сохраняет конечную точку и информацию пакета...

System_CAPS_pubmethodBeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Асинхронно отправляет данные на подключенный Socket.

System_CAPS_pubmethodBeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Асинхронно отправляет данные на подключенный Socket.

System_CAPS_pubmethodBeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Асинхронно отправляет данные на подключенный Socket.

System_CAPS_pubmethodBeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Асинхронно отправляет данные на подключенный Socket.

System_CAPS_pubmethodBeginSendFile(String, AsyncCallback, Object)

Отправляет файл fileName на подключенный Socket с помощью UseDefaultWorkerThread флаг.

System_CAPS_pubmethodBeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Асинхронно отправляет файл и буферов данных на подключенный Socket объекта.

System_CAPS_pubmethodBeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Асинхронно отправляет данные для конкретного удаленного узла.

System_CAPS_pubmethodBind(EndPoint)

Связывает Socket с локальной конечной точки.

System_CAPS_pubmethodSystem_CAPS_staticCancelConnectAsync(SocketAsyncEventArgs)

Отменяет выполнение асинхронного запроса для подключения к удаленному узлу.

System_CAPS_pubmethodClose()

Закрывает Socket подключение и освобождает все связанные ресурсы.

System_CAPS_pubmethodClose(Int32)

Закрывает Socket подключения и выпуски, все ресурсы, связанные с заданным временем ожидания, чтобы разрешить отправку данных в очереди.

System_CAPS_pubmethodConnect(EndPoint)

Устанавливает подключение к удаленному узлу.

System_CAPS_pubmethodConnect(IPAddress, Int32)

Устанавливает подключение к удаленному узлу. Узел задается IP-адрес и номер порта.

System_CAPS_pubmethodConnect(IPAddress[], Int32)

Устанавливает подключение к удаленному узлу. Узел задается массивом IP-адреса и номера порта.

System_CAPS_pubmethodConnect(String, Int32)

Устанавливает подключение к удаленному узлу. Узел задается именем узла и номером порта.

System_CAPS_pubmethodConnectAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

System_CAPS_pubmethodSystem_CAPS_staticConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

System_CAPS_pubmethodDisconnect(Boolean)

Закрывает подключение к сокету и позволяет повторно использовать сокета.

System_CAPS_pubmethodDisconnectAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для отключения от удаленной конечной точки.

System_CAPS_pubmethodDispose()

Освобождает все ресурсы, используемые текущим экземпляром класса Socket.

System_CAPS_protmethodDispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Socket, и при необходимости освобождает также управляемые ресурсы.

System_CAPS_pubmethodDuplicateAndClose(Int32)

Дублирует ссылку сокета для конечного процесса и закрывает сокет для этого процесса.

System_CAPS_pubmethodEndAccept(Byte[], IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый Socket объекта для обработки связи с удаленным узлом. Этот метод возвращает буфер, который содержит начальные данные для передачи.

System_CAPS_pubmethodEndAccept(Byte[], Int32, IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый Socket объекта для обработки связи с удаленным узлом. Этот метод возвращает буфер, который содержит начальные данные и число переданных байтов.

System_CAPS_pubmethodEndAccept(IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый Socket для обработки связи с удаленным узлом.

System_CAPS_pubmethodEndConnect(IAsyncResult)

Завершает ожидающий асинхронный запрос на подключение.

System_CAPS_pubmethodEndDisconnect(IAsyncResult)

Завершает запрос ожидающие асинхронные disconnect.

System_CAPS_pubmethodEndReceive(IAsyncResult)

Завершает ожидающее асинхронное чтение.

System_CAPS_pubmethodEndReceive(IAsyncResult, SocketError)

Завершает ожидающее асинхронное чтение.

System_CAPS_pubmethodEndReceiveFrom(IAsyncResult, EndPoint)

Завершает ожидающее асинхронное чтение с определенной конечной точки.

System_CAPS_pubmethodEndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

Завершает ожидающее асинхронное чтение с определенной конечной точки. Этот метод также предоставляют дополнительные сведения о пакетах, чем EndReceiveFrom.

System_CAPS_pubmethodEndSend(IAsyncResult)

Завершает отложенную операцию асинхронной передачи.

System_CAPS_pubmethodEndSend(IAsyncResult, SocketError)

Завершает отложенную операцию асинхронной передачи.

System_CAPS_pubmethodEndSendFile(IAsyncResult)

Завершает отложенную операцию асинхронной передачи файла.

System_CAPS_pubmethodEndSendTo(IAsyncResult)

Завершает отложенную операцию асинхронной передачи в определенное расположение.

System_CAPS_pubmethodEquals(Object)

Определяет, равен ли заданный объект текущему объекту.(Наследуется от Object.)

System_CAPS_protmethodFinalize()

Освобождает ресурсы, используемые классом Socket.(Переопределяет Object.Finalize().)

System_CAPS_pubmethodGetHashCode()

Служит хэш-функцией по умолчанию.(Наследуется от Object.)

System_CAPS_pubmethodGetSocketOption(SocketOptionLevel, SocketOptionName)

Возвращает значение указанного Socket параметр, представленное в виде объекта.

System_CAPS_pubmethodGetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Возвращает указанный Socket вариант параметра, представленное в виде массива байтов.

System_CAPS_pubmethodGetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Возвращает значение указанного Socket параметр в массиве.

System_CAPS_pubmethodGetType()

Возвращает объект Type для текущего экземпляра.(Наследуется от Object.)

System_CAPS_pubmethodIOControl(Int32, Byte[], Byte[])

Задает низкоуровневые операционные режимы для Socket используя цифровые коды элементов управления.

System_CAPS_pubmethodIOControl(IOControlCode, Byte[], Byte[])

Задает низкоуровневые операционные режимы для Socket с помощью IOControlCode перечисление для задания управляющие коды.

System_CAPS_pubmethodListen(Int32)

Окружение Socket в состоянии прослушивания.

System_CAPS_protmethodMemberwiseClone()

Создает неполную копию текущего объекта Object.(Наследуется от Object.)

System_CAPS_pubmethodPoll(Int32, SelectMode)

Определяет состояние Socket.

System_CAPS_pubmethodReceive(Byte[])

Получает данные из связанного Socket в буфере приема.

System_CAPS_pubmethodReceive(Byte[], Int32, Int32, SocketFlags)

Получает указанное число байтов из связанного Socket в указанной позиции смещения буфера приема, используя указанный SocketFlags.

System_CAPS_pubmethodReceive(Byte[], Int32, Int32, SocketFlags, SocketError)

Получает данные из связанного Socket в приемного буфера, используя указанный SocketFlags.

System_CAPS_pubmethodReceive(Byte[], Int32, SocketFlags)

Получает указанное число байтов данных из связанного Socket в приемного буфера, используя указанный SocketFlags.

System_CAPS_pubmethodReceive(Byte[], SocketFlags)

Получает данные из связанного Socket в приемного буфера, используя указанный SocketFlags.

System_CAPS_pubmethodReceive(IList<ArraySegment<Byte>>)

Получает данные из связанного Socket в список буферов приема.

System_CAPS_pubmethodReceive(IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из связанного Socket в список буферов приема, используя указанный SocketFlags.

System_CAPS_pubmethodReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Получает данные из связанного Socket в список буферов приема, используя указанный SocketFlags.

System_CAPS_pubmethodReceiveAsync(SocketAsyncEventArgs)

Начинает асинхронный запрос для получения данных из подключенного Socket объекта.

System_CAPS_pubmethodReceiveFrom(Byte[], EndPoint)

Получает датаграмму в буфер данных и сохраняет конечную точку.

System_CAPS_pubmethodReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Получает указанное число байтов данных в указанное место буфера данных, используя указанный SocketFlags, и сохраняет конечную точку.

System_CAPS_pubmethodReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Получает указанное число байтов в буфере данных, с использованием указанного SocketFlags, и сохраняет конечную точку.

System_CAPS_pubmethodReceiveFrom(Byte[], SocketFlags, EndPoint)

Получает датаграмму в буфер данных, используя указанный SocketFlags, и сохраняет конечную точку.

System_CAPS_pubmethodReceiveFromAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного приема данных с указанного сетевого устройства.

System_CAPS_pubmethodReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Получает указанное число байтов данных в указанное место буфера данных, используя указанный SocketFlags, и сохраняет конечную точку и информацию пакета.

System_CAPS_pubmethodReceiveMessageFromAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного приема указанное число байтов данных в указанное расположение в буфере данных, используя указанный SocketAsyncEventArgs.SocketFlags, и сохраняет конечную точку и информацию пакета.

System_CAPS_pubmethodSystem_CAPS_staticSelect(IList, IList, IList, Int32)

Определяет состояние одного или нескольких сокетов.

System_CAPS_pubmethodSend(Byte[])

Отправляет данные на подключенный Socket.

System_CAPS_pubmethodSend(Byte[], Int32, Int32, SocketFlags)

Отправляет указанное число байтов данных на подключенный Socket, начиная с указанного смещения и используя заданный SocketFlags.

System_CAPS_pubmethodSend(Byte[], Int32, Int32, SocketFlags, SocketError)

Отправляет указанное число байтов данных на подключенный Socket, начиная с указанного смещения и используя заданный SocketFlags

System_CAPS_pubmethodSend(Byte[], Int32, SocketFlags)

Отправляет указанное число байтов данных на подключенный Socket, используя указанный SocketFlags.

System_CAPS_pubmethodSend(Byte[], SocketFlags)

Отправляет данные на подключенный Socket с использованием указанного SocketFlags.

System_CAPS_pubmethodSend(IList<ArraySegment<Byte>>)

Возвращает набор буферов в списке на подключенный Socket.

System_CAPS_pubmethodSend(IList<ArraySegment<Byte>>, SocketFlags)

Возвращает набор буферов в списке на подключенный Socket, используя указанный SocketFlags.

System_CAPS_pubmethodSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Возвращает набор буферов в списке на подключенный Socket, используя указанный SocketFlags.

System_CAPS_pubmethodSendAsync(SocketAsyncEventArgs)

Асинхронно отправляет данные на подключенный Socket объекта.

System_CAPS_pubmethodSendFile(String)

Отправляет файл fileName на подключенный Socket объекта с UseDefaultWorkerThread передачи флага.

System_CAPS_pubmethodSendFile(String, Byte[], Byte[], TransmitFileOptions)

Отправляет файл fileName и буферов данных на подключенный Socket с помощью указанной TransmitFileOptions значение.

System_CAPS_pubmethodSendPacketsAsync(SocketAsyncEventArgs)

Коллекция файлов, либо в памяти буферы данных асинхронно отправляет на подключенный Socket объекта.

System_CAPS_pubmethodSendTo(Byte[], EndPoint)

Отправляет данные на указанную конечную точку.

System_CAPS_pubmethodSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

Отправляет указанное число байтов данных на указанную конечную точку, начиная с указанного места в буфере и с использованием указанного SocketFlags.

System_CAPS_pubmethodSendTo(Byte[], Int32, SocketFlags, EndPoint)

Отправляет указанное число байтов данных на указанную конечную точку, используя заданный SocketFlags.

System_CAPS_pubmethodSendTo(Byte[], SocketFlags, EndPoint)

Отправляет данные на указанную конечную точку, используя заданный SocketFlags.

System_CAPS_pubmethodSendToAsync(SocketAsyncEventArgs)

Асинхронно отправляет данные для конкретного удаленного узла.

System_CAPS_pubmethodSetIPProtectionLevel(IPProtectionLevel)

Уровень защиты IP на сокете.

System_CAPS_pubmethodSetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

Задает указанный Socket указанный параметр Boolean значение.

System_CAPS_pubmethodSetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Задает указанный Socket возможность заданное значение, представленное в виде массива байтов.

System_CAPS_pubmethodSetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Задает указанный Socket значение заданного целого числа.

System_CAPS_pubmethodSetSocketOption(SocketOptionLevel, SocketOptionName, Object)

Задает указанный Socket параметр указанное значение, представленное в виде объекта.

System_CAPS_pubmethodShutdown(SocketShutdown)

Отключает передачу и прием на Socket.

System_CAPS_pubmethodToString()

Возвращает строковое представление текущего объекта.
(Наследуется от Object.)

Socket Класс предоставляет широкий набор методов и свойств для сетевых взаимодействий. Socket Класс позволяет выполнять синхронный и асинхронную передачу данных с использованием любого из коммуникационных протоколов, перечисленных в ProtocolType перечисления.

Socket Класс соответствует шаблону именования .NET Framework для асинхронных методов. Например, синхронный Receive метод соответствует асинхронным BeginReceive и EndReceive методы.

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

  • Если используется протокол с установлением соединения, как TCP, ваш сервер может прослушивать подключений с помощью Listen метод. Accept Метод обрабатывает любые входящие соединения, запросы и возвращает Socket можно использовать для обмена данными с удаленным узлом. Используйте этот возвращенный Socket для вызова Send или Receive метод. Вызов Bind метод до вызова метода Listen метод, если требуется указать локальный IP-адрес и порт номер. Используйте нулевое значение для номера порта основному поставщику услуг присвоить свободный порт. Если вы хотите подключиться к прослушивающему узлу, вызовите Connect метод. Для обмена данными, вызовите Send или Receive метод.

  • Если используется протокол без установления соединения, например UDP, необязательно для прослушивания соединений вообще. Вызов ReceiveFrom метод для приема входящих датаграмм. Используйте SendTo метод отправки датаграмм на удаленный узел.

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

  • Если используется протокол с установлением соединения, как TCP, используйте Socket, BeginConnect, и EndConnect методов для соединения с прослушивающим узлом. Используйте BeginSend и EndSend или BeginReceive и EndReceive методы для асинхронного обмена данными. Входящие запросы на подключение могут быть обработаны с помощью BeginAccept и EndAccept.

  • Если используется протокол без установления соединения, например UDP, можно использовать BeginSendTo и EndSendTo для отправки датаграмм, а BeginReceiveFromиEndReceiveFrom для приема датаграмм.

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

После завершения отправки и получения данных, используйте Shutdown метод для отключения Socket. После вызова метода Shutdown, вызовите Close метод, чтобы освободить все ресурсы, связанные с Socket.

Socket Позволяет настроить вашей Socket с помощью SetSocketOption метод. Получить эти параметры с помощью GetSocketOption метод.

System_CAPS_noteПримечание

Если вы пишете относительно простое приложение и не требуется максимальная производительность, рассмотрите возможность использования TcpClient, TcpListener, и UdpClient. Эти классы предоставляют простой и удобный интерфейс для Socket связи.

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

using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

public class GetSocket
{
    private static Socket ConnectSocket(string server, int port)
    {
        Socket s = null;
        IPHostEntry hostEntry = null;

        // Get host related information.
        hostEntry = Dns.GetHostEntry(server);

        // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
        // an exception that occurs when the host IP Address is not compatible with the address family
        // (typical in the IPv6 case).
        foreach(IPAddress address in hostEntry.AddressList)
        {
            IPEndPoint ipe = new IPEndPoint(address, port);
            Socket tempSocket = 
                new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            tempSocket.Connect(ipe);

            if(tempSocket.Connected)
            {
                s = tempSocket;
                break;
            }
            else
            {
                continue;
            }
        }
        return s;
    }

    // This method requests the home page content for the specified server.
    private static string SocketSendReceive(string server, int port) 
    {
        string request = "GET / HTTP/1.1\r\nHost: " + server + 
            "\r\nConnection: Close\r\n\r\n";
        Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
        Byte[] bytesReceived = new Byte[256];

        // Create a socket connection with the specified server and port.
        Socket s = ConnectSocket(server, port);

        if (s == null)
            return ("Connection failed");

        // Send request to the server.
        s.Send(bytesSent, bytesSent.Length, 0);  

        // Receive the server home page content.
        int bytes = 0;
        string page = "Default HTML page on " + server + ":\r\n";

        // The following will block until te page is transmitted.
        do {
            bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
            page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
        }
        while (bytes > 0);

        return page;
    }

    public static void Main(string[] args) 
    {
        string host;
        int port = 80;

        if (args.Length == 0)
            // If no server name is passed as argument to this program, 
            // use the current host name as the default.
            host = Dns.GetHostName();
        else
            host = args[0];

        string result = SocketSendReceive(host, port); 
        Console.WriteLine(result);
    }
}

SocketPermission

To establish an outgoing connection or accept an incoming request.

Универсальная платформа Windows
Доступно с 10
.NET Framework
Доступно с 1.1
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.1

Экземпляры этого класса являются потокобезопасными.

Вернуться в начало
Показ: