Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Передача и прием сообщений




 

Для решения поставленной задачи рекомендуется использовать неблокирующие сокеты. При этом операции приема/передачи сообщений будут происходить асинхронно и не останавливать выполнение программного кода. У клиентского сокета свойство ClientType должно иметь значение ctNonBlocking, а у серверного сокета свойству ServerType нужно присвоить значение stNon-Blocking.

Для передачи сообщений служат функции SendText и SendBuf:

Функция SendText посылает текстовое сообщение s через сокет:

 

function SendText (const s: string): integer,

 

где s - передаваемое сообщение.

Возвращаемый параметр – количество отосланных байт, в случае ошиб-ки результат равен –1.

Функция SendBuf посылает буфер через сокет. Буфером может являться любой тип, например структура (record) или integer:

 

function SendBuf (var buf; bufsize: integer; flags: integer): integer,

 

где buf - передаваемые данные;

bufsize – размер данных, предназначенных для передачи;

flags – параметр передачи данных (рекомендуется приравнять к нулю).

 

Возвращаемое значение – количество отосланных байт, в случае ошибки результат равен –1.

 

Для получения сообщений используются функции ReceiveText и Re-ceiveBuf:

Функция ReceiveText получает сообщения в виде текстовой строки и вызывается без параметров:

 

function ReceiveText: string.

 

Эта функция возвращает полученную строку.

Функция ReceiveBuf получает сообщения через буфер. Как и у функции SendBuf, буфером функции ReceiveBuf может являться любой тип:

 

function ReceiveBuf(var buf; bufsize: integer; flags: integer): integer,

 

где buf – полученные данные;

bufsize – размер принятых данных;

flags – параметр передачи данных (рекомендуется принять равным 0).

 

Возвращаемое значение – количество полученных байт, в случае ошибки результат равен –1.

Узнать размер полученных данных можно, вызвав следующую функцию:

 

function ReceiveLength: integer.

 

Возвращаемое значение – количество полученных байт.

 

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

Варианты заданий

1. Организовать взаимодействие типа клиент - сервер. Клиент делает запрос серверу о наличии файлов с определенным расширением из указанной директории. Сервер сканирует указанную директорию и отправляет клиенту список файлов, удовлетворяющих запросу.

 

2. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Сервер должен удалить из текста все слова, длина которых меньше N символов. N-задается вручную.

 

3. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Сервер возвращает текст, слова, которого отсортированы в алфавитном порядке.

 

4. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Сервер возвращает только те слова, в которых гласных больше чем согласных.

 

5. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Сервер кодирует текст в азбуку Морзе.

 

 

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

 

7. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Серверу отправляется текст и отдельно символ, задаваемый вручную. Сервер возвращает только те слова, которые начинающиеся и заканчивающиеся этой буквой (как большой, так и малой)

 

8. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Серверу передаются текс содержащий абзацы и число N. Сервер должен удалить из текста абзац под номером N (абзацы отделяются друг от друга одной или несколькими пустыми строками и нумеруются от 1).

 

9. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: Серверу передаются текс и число N. Сервер возвращает текс содержащий, только те слова, длина которых равно числу N.

 

10. Организовать взаимодействие типа клиент - сервер. Клиент отправляет серверу некоторый текст произвольной длины. Серверная часть выполняет его обработку и возвращает результат клиенту: символ, который больше всего встречается в тексте (в виде А-134), и символ который меньше всего встречается в тексте (в виде Ю-14).

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 387 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Так просто быть добрым - нужно только представить себя на месте другого человека прежде, чем начать его судить. © Марлен Дитрих
==> читать все изречения...

2498 - | 2247 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.