Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание сервер-приложений на Delphi  (Прочитано 14653 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
posterise
Гость
« : 14-05-2004 13:40 » 

Необходимо написать сетевую игру шашки.
Как в Delphi организуется процесс передачи данных по сети в режиме клиент-сервер ? И где можно почитать инфу по этому поводу ?
 :?:
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 18-05-2004 06:28 » 

я просто скопирую свой пост из другого форума, если будут конкретные вопросы - пиши.

Цитата
ну.... давай по порядку.

жил да был.... Unix. и озадачились чуваки проблемой обмена информацией в сетях tcp/ip. и придумали они сокеты (парадигма сокетов как таковая была разработана Berkeley Software Distribution - BSD). сокеты представляют из себя интерфейс, позволяющий слать по сетке сообщения, потоки и пр. в общем, что угодно вплоть до real-time обмена мультимедийной информацией. Потом пришёл дядя Гейтс. поглядел. понравилось. но поскольку дядя сей, как говориться, "умишком скуден, хуишком - блуден", то и сделал он то, что делал всю жизнь (и на чём, собственно, и разбогател): взял классную обкатанную чужую технологию, обозвал её Windows Sockets 2 API, написал на неё баламутное SDK, включил в состав своих сраных виндов (написанных на ворованном досе) и принялся продавать. вот таким вот образом на сегодняшний день мы имеем механизм обмена данными для протоколов tcp/ip. Ну а Borland натянула на этот механизм свою обычную vcl-оболочку и таким образом возникло два компонента: TServerSocket и TClientSocket. в 7-ке, если я не ошибаюсь, их заменили TcpServer и TcpClient, но фиг нафиг не меняется.

ServerSocket
задаётся адрес (Address) и порт (Port). При установке Active в TRUE запускается поток, который "слушает" указанный порт на предмет сторонних подключений. при возникновении подключения возникает событие OnAccept.

ClientSocket
задаётся адрес (Address), по которому живёт предполагаемый сервер, и порт (Port), на котором он ждёт подключений. При установке Active в TRUE происходит соединение с сервером. есс-но, что сервер должен быть заранее запущен. при подключении возникает событие OnConnect.

оба компонента (а вернее, их общий прапредок - TCustomWinSocket) умеют посылать и и принимать данные по сетке.

вот это краткие азы. на самом деле оба компонента представляют собой "обёртку" вокруг непосредственно сокетов, и нюансов там масса, но это уже разберёшься сам, всё достаточно прозрачно.

в заключение простой пример.

Project1 (Unit1)
на форме - ServerSocket1 (Host = <имя_моего_компьютера>, Port = 1234, Active = TRUE), Memo1, Edit1, Button1.
Код:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ScktComp, StdCtrls;

type
 TForm1 = class(TForm)
   ss: TServerSocket;
   Memo1: TMemo;
   Edit1: TEdit;
   Button1: TButton;
   procedure ssAccept(Sender: TObject; Socket: TCustomWinSocket);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

|$R *.DFM"

procedure TForm1.ssAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
 Memo1.Lines.Add (Socket.RemoteHost + ' connected at ' + DateTimeToStr (Now));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to ss.Socket.ActiveConnections - 1 do
   ss.Socket.Connections [i].SendText (Edit1.Text);
end;

end.



Project2 (Unit2)
на форме - ClientSocket1 (Host = <имя_моего_компьютера>, Port = 1234, Active = TRUE).
Код:
unit Unit2;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ScktComp, StdCtrls;

type
 TForm2 = class(TForm)
   cs: TClientSocket;
   procedure csConnect(Sender: TObject; Socket: TCustomWinSocket);
   procedure csRead(Sender: TObject; Socket: TCustomWinSocket);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

|$R *.DFM"

procedure TForm2.csConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
 Caption := 'Connected to ' + Socket.RemoteHost;
end;


procedure TForm2.csRead(Sender: TObject; Socket: TCustomWinSocket);
begin
 ShowMessage (Socket.ReceiveText);
end;

end.

запусти Project1, потом - Project2. и шли на здоровье сообщения. ну а дальше, я думаю, сам разберёшься - ввести виды сообщений, в зависимости от них - выполнять различные действия, и т.д.

удачи Улыбаюсь
« Последнее редактирование: 25-11-2007 21:30 от Алексей1153++ » Записан

tcp_ipx
Гость
« Ответ #2 : 25-05-2004 07:19 » 

Сокеты не обязательно базируются на протоколе TCP/IP, они могут также
базироваться на IPX/SPX, etc. Жжешь
А что такое сокет?
http://blackman.wp-club.net/myfaq/24022004c.php#anc51
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 25-05-2004 11:58 » 

tcp_ipx, грубо говоря, сокет - это пара ip-порт, разве нет? а из сетей, использующих подобную реализацию, самая растпространённая - tcp/ip.

статью прочту чуть попзже обязательно, спасибо Улыбаюсь
Записан

lion_ts
Гость
« Ответ #4 : 19-06-2004 19:27 » 

Сокеты - это реализация Майкрософт
А о Делфи - открывай примеры, что в поставе, там их куча, и сокеты, и Инди, и т.д.

А статью почитай.
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 21-06-2004 09:12 » 

lion_ts
Сокеты - это общепринятое понятие, они есть во всех сетевых системах, и M$ тут ни при чем. Библиотека для работы с сокетами под Windows - WinSock действительно использует реализацию сокетов от M$, которая является надстрокой (с некоторыми дополнениями) над стандартной, но совместима с ней. Потому используя механизм взаимодействия приложений через сокеты (стандартные, Berkeley Sockets) пишутся программы, у которых клиент и сервер могут работать на разных платформах (M$ Win, *nix, MacOS, ...)
http://www.google.com/search?hl=uk&ie=UTF-8&q=программирование+Berkeley+Sockets
http://directory.google.com/Top/Computers/Programming/Internet/Sockets (тут правда на англиском)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines