

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Пример проекта WinSock для сети интранет |
|
Рассмотрим максимально упрощенный пример работы с интерфейсом Win-Sock. Разработаем два приложения - серверную и клиентскую части Win-Sock - и организуем между ними односторонний обмен данными: сервер будет выступать в качестве получателя данных от клиентских приложений. Проект предназначен для работы в локальной сети предприятия интранет. Чтобы упростить работу с проектом, выясните IP-адрес вашего компьютера, а если возможно, то назначьте своему компьютеру постоянный IP-адрес, например 168.0.0.1, или адрес разработчика, например 127.0.0.1. В последнем случае вы получите возможность проводить отладку клиентской и серверной частей проекта на одной машине. Но если компьютер работает в сети, не меняйте IP-адрес без ведома администратора! Клиентское приложение Программа клиентского окончания Winsock особой сложностью не отличается. Решив три простейшие задачи, проект получит право называться приложением, работающим в сети: 1. Установка соединения с серверной стороной. 2. Отправка серверу заранее подготовленных данных. 3. Разрыв соединения. Вот и весь список. Решение поставленных задач элементарно. Создаем новый проект и на его главной форме размещаем следующие компоненты (рис. 23.3): • Сердце клиентской части интерфейса WinSock - компонент TTCPClient (вы его найдете на странице Internet палитры компонентов). • Две строки ввода TEdit. Переименуйте первую в edRemoteHost, а вторую - в edRe-motePort. Строка edRemoteHost понадобится пользователю для ввода IP-адреса удаленного хоста, вторая строка предназначена для указания номера порта. • Три управляющие кнопки (TSpeedButton), предназначенные для: соединения с сервером, разрыва соединения и для передачи данных. Настроим свойства кнопок следующим образом: Кнопка вхождения в связь: Name:= btnConnect; Caption:= 'Соединение'; GroupIndex:=1; Кнопка разрыва соединения: Name:= btnDisconnect; Caption:= 'Разрыв'; GroupIndex:=1; Down:=True; Кнопка отправки данных: Name:= btnSend; Caption:= 'Передача'; GroupIn-dex:=0; Enabled :=False; В заключение осталось описать три события - щелчки по нашим кнопкам. В первую очередь событие OnClick() кнопки вхождения в связь: procedure TfrmMainClient.btnConnectClick(Sender: TObject); begin if TcpClient1.Connected=False then with TcpClient1 do begin {заполнение адресных данных сервера} RemoteHost:=edRemoteHost.Text; RemotePort:=edRemotePort.Text; Open; //отправка серверу запроса на соединение {если не удалось соединиться, "утопим" кнопку btnDisConnect} btnDisConnect.Down:=NOT Connected; {активность кнопки передачи зависит от наличия контакта с сервером} btnSend.Enabled:=Connected; end; end; Щелчок по кнопке разрыва соединения: procedure TfrmMainClient.btnDisconnectClick(Sender: TObject); begin TcpClient1.Close; btnSend.Enabled:=TcpClient1.Active; end; Щелчок по кнопке передачи данных: procedure TfrmMainClient.btnSendClick(Sender: TObject); var i : byte; begin if TcpClient1.Connected=true then {генерируем и одновременно отправляем серверу 256 строк данных} for i:=0 to 255 do TcpClient1.Sendln('Message line' + IntToStr(i)); end. |
