Процесс обучения учащихся информатике в общеобразовательной школе в условиях инновационной образовательной среды
Используя объект типа TserverSocket, реализуйте передачу данных клиенту. Для передачи строки по установленному ТСР/IР-соединению используется метод SendText. Введите в созданный обработчик события следующий код для всех двенадцати сокетов:
if form1.ServerSocket1.Socket.ActiveConnections=1 then
form1.ServerSocket1.Socket.Connections[0].SendText(text);
После выполнения этих действий д
ля приложения-клиента будет инициировано событие OnRead.
Используя объект типа TserverSocket, реализуйте получение данных на стороне сервера. Для этого создайте для компонента ServerSocketl обработчик события OnClientRead. Это событие будет инициализировано при передаче по установленному соединению данных с клиента. Введите в созданный обработчик события код, принимающий передаваемые данные. Метод ReceiveText принимает данные, переданные объекту Socket. Например, следующий код отображает принимаемые данные в компоненте типа ТМеmо:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var s:string;
begin
s:=ServerSocket1.Socket.Connections[0].ReceiveText;
if copy(s,1,2)='20' then
memo1.Lines.Add(copy(s,4,length(s))) else
if copy(s,1,2)='21' then
begin name1.Text:=copy(s,4,length(s));
memo1.Lines.Clear;
end;
Для загрузки теста из заранее написанного текстового документа была создана следующая процедура:
procedure TForm1.N2Click(Sender: TObject);
var s:string;
i,j1,j2:integer;
begin
getdir(0,s);
OpenDialog1.InitialDir:=s; //диалог открытия теста
if OpenDialog1.Execute then //если нажата кнопка ОК
begin
assignfile(FileTest,OpenDialog1.FileName);
reset(FileTest);// открытие файла теста для чтения
j1:=1;
j2:=0;
readln(FileTest,s); //чтение из файла
while not eof(filetest) do // пока файл не окончен
begin readln(FileTest,s); inc(j1); end; //счетчик записей в файле
closefile(filetest); // закрытие файла
ProcessDlg.ProgressBar1.Position:=0;//на основании j1 заполняется прогресбар
ProcessDlg.Label1.Caption:='Загрузка теста .';
ProcessDlg.Show;
ProcessDlg.Refresh;
SendTxt('10/'); //отправка сообщения клиенту о начале передачи теста
Ansved(); //получение ответа от клиента
reset(FileTest); //открытие файла для чтения
readln(FileTest,s); //чтение из файла
SendTxt('11/'+s); //отправка заголовка теста
inc(j2);
ProcessDlg.ProgressBar1.Position:=trunc(j2/j1*100);
readln(FileTest,s);
Ansved();
SendTxt('12/'+s); //отправка времени на ответ
inc(j2);
ProcessDlg.ProgressBar1.Position:=trunc(j2/j1*100);
readln(FileTest,s);
Ansved();
SendTxt('13/'+s); //отправка количества вопросов
inc(j2);
ProcessDlg.ProgressBar1.Position:=trunc(j2/j1*100);
while not eof(filetest) do //непосредственная отправка вопросов
begin
readln(FileTest,s);
Ansved();
SendTxt('14/'+s); //отправка вопросов и ответов
inc(j2);
ProcessDlg.ProgressBar1.Position:=trunc(j2/j1*100);
end;
Ansved();
SendTxt('15/'); //окончание теста
inc(j2);
ProcessDlg.ProgressBar1.Position:=trunc(j2/j1*100);
closefile(filetest); //закрытие файла теста
ProcessDlg.Hide; //закрытие диалога
end;
end;
На этом этапе создание сокета со стороны сервера завершено.
Создание клиентской части сетевого теста
Для того чтобы создать клиента, использующего сокет TCP/IP для реализации сетевого соединения, необходимо выполнить следующие действия:
Создайте новое приложение и расположите на главной форме компонент TClientSocket со страницы Internet палитры компонентов. Этот компонент используется для реализации TCP/IP-соединения со стороны клиента.
Рисунок 29. Главное окно клиентской части тестовой оболочки
Создайте объекты, используемые для хранения передаваемых и принимаемых значений. Расположите на форме пять полей типа ТМето (одно для отображения получаемых вопросов теста, остальные - для отображения получаемых вариантов ответа), четыре компонента CheckBox, две кнопки, компонент таймер, компонент MainMenu, компонент типа TXPManifest (для обеспечения совместимости интерфейса тестовой оболочки с интерфейсом операционной системы Windows XP), три компонента типа TLabel (один – для названия теста, второй – для текстового комментария о количестве оставшегося времени, третий – для числового выражения оставшегося на вопрос времени).
Создайте еще одну форму для активации клиента, используя стандартные диалоги.
Рисунок 30. Окно авторизации
Напишите код, выполняющий установление соединения с сервером. Сначала следует определить, открыто ли соединение, и если соединение открыто, то закрыть его. Если значение свойства Active сокета равно True, то соединение открыто. Открыть соединение можно, или установив это свойство равным True, или вызвав для объекта сокет метод Open. Закрыть соединение можно, или установив свойство Active равным False, или вызвав для объекта сокет метод Close. В обработчик события OnShow формы введите следующую процедуру:
procedure TNameDlg.FormShow(Sender: TObject);
var par: file of shortstring;
s: string;
p: shortstring;
begin
Label3.Visible:=false;
edit1.Text:=sname;
form1.ClientSocket1.Active:=false;
getdir(0,s);
assignfile(par,s+'\par.par'); // открытие файла параметров
reset(par); // открытие файла для чтения
read(par,p);
form1.ClientSocket1.Host:=p; // присвоение адреса сервера
form1.ClientSocket1.Address:=p; //присвоение адреса сервера
read(par,p);
form1.ClientSocket1.Port:=StrToInt(p);//присвоение номера порта
closefile(par);
form1.ClientSocket1.Active:=true; //активация клиента
end;
Далее следует создать форму с запросом IP-адреса подключаемого сервера и порта клиента.
Рисунок 31. Окно параметров
Во избежание повторного ввода этих данных при следующем запуске приложения была создана процедура, в которой после первой записи IP-адреса центрального компьютера и номера порта происходит сохранение этих данных в файле (par.par) в текущем каталоге.
procedure TForm1.N4Click(Sender: TObject);
var par: file of shortstring;
s: string;
p: shortstring;
begin
ParDlg.ShowModal; //запуск окна параметров
if ParDlg.ModalResult=mrok then //нажата кнопка ОК
begin ClientSocket1.Active:=false;
getdir(0,s); //получение адреса текущей папки
assignfile(par,s+'\par.par');
rewrite(par);
p:=ParDlg.Edit1.Text;
write(par,p);
p:=ParDlg.Edit2.Text;
write(par,p);
closefile(par)
end;
end;
Создайте код, выполняющий получение данных на стороне клиента. Для этого создайте для компонента ClientSocket1 обработчик события OnRead, Метод ReceiveText принимает данные, переданные объекту Socket.
Другие рефераты на тему «Педагогика»:
- Сущность педагогической технологии
- Лицензирование и аккредитация образовательного учреждения
- Развитие коммуникативных навыков у младших школьников на уроках английского языка
- Формирование словаря у дошкольников с общим недоразвитием речи
- Организация режима дня в разновозрастных группах детского сада
Поиск рефератов
Последние рефераты раздела
- Тенденции развития системы высшего образования в Украине и за рубежом: основные направления
- Влияние здоровьесберегающего подхода в организации воспитательной работы на формирование валеологической грамотности младших школьников
- Характеристика компетенций бакалавров – психологов образования
- Коррекционная программа по снижению тревожности у детей младшего школьного возраста методом глинотерапии
- Формирование лексики у дошкольников с общим недоразвитием речи
- Роль наглядности в преподавании изобразительного искусства
- Активные методы теоретического обучения