Сетевое программирование в C# (часть 2)

11 Июнь 2009 – 20:38

Шагами для создания самых простых синхронных клиентов являются:
1. Определить объект класса Socket.
2. Подсоеденить созданный объект к точке подключения.
3. Отправить или принять информацию.
4. Завершить сокет.
5. Закрыть сокет.

Класс Socket предоставляет конструктор для создания объекта Socket.

public Socket (AddressFamily af, ProtocolType pt, SocketType st)

Где, AddressFamily, ProtocolType и SocketType это перечисляемые типы, которые определены внутри класса Socket.

Параметр AddressFamily определяет адресную схему, которую использует объект класса Socket, чтобы определить адрес. Например, AddressFamily.InterNetwork определяет, что для поключения сокета необходим протокол IP четверой версии.

Параметр  SocketType указывает тип сокета текущего состояния. К примеру, SocketType.Stream указывает на поток с постоянным подключением, а SocketType.Dgram на поток без постоянного подключения.

Параметр ProtocolType определяет тип протокола, который будет использован для соединения. Например,  ProtocolType.Tcp указывает, что используется протокол TCP, а ProtocolType.Udp – протокол UDP.

public Connect (EndPoint ep)

Этот метод используется локальным объектом для подключение к удаленной точке. И используется он только на клиентской стороне. В случае удачного установления сосединения методы Send() и Receive() могут быть использованы для оправки и получения данных по сети.

Свойство  Connected определено внутри класса Socket и используется для проверки статуса соединения.

Методы  Send() и Receive()

Оба этих метода возвращают количество переданных или полученных байт типа Int32. Существует по три перегруженных метода для каждой функции.

Для метода Send():

public int Send (byte[] buffer, SocketFlags flags)
public int Send (byte[] buffer)
public int Send (byte[] buffer,int offset, int size, SocketFlags flags)
где, buffer – массив байт, который необходимо передать, offset – сдвиг в массиве, с которого необходимо передавать данные, а size – количество данных, которые необходимо передать.

Для метода Receive():

public int Receive (byte[] buffer, SocketFlags flags)
public int Receive (byte[] buffer)
public int Receive (byte[] buffer,int offset, int size, SocketFlags flags)
где, buffer – масив, которые принимает данные, offset – сдвиг в массиве, по которому необходимо сохранить данные, а size – размер сохраняемых данных.

public void ShutDown(SocketShutdown how)

После окончания передачи данных через сеть, соединение между сокетами может быть закрыто с помощью метода ShutDown(). Параметр how определяет причину окончания передачи данных. SoketShutdown.Send – указывает удаленному сокету, что локальный не будет передавать больше данных и SoketShutdown.Receive – указывает удаленному сокету, что локальный не будет больше принимать данных.

public void Close()

Этот метод закрывавает текущее состояние объекта и освобождает все управляемые и неуправляемые ресурсы выделенные этому состоянию объекта.

Вы должны войти, чтобы оставить комментарий.