Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
4 / 3 / 0
Регистрация: 30.01.2010
Сообщений: 52
1

Как делается многопользовательский клиент/сервер?

30.03.2010, 15:37. Показов 3129. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скажите как делается многопользовательский клиент сервер прочитал про поле дата в ServerSocket1.Socket.Connections[0] но так и не понял как его использовать дайте парочку примеров
интересует пример как передать файл от сервера определенному клиенту
Заранее благодарен
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2010, 15:37
Ответы с готовыми решениями:

Как сделать многопользовательский клиент-сервер?
Здравствуйте. Скажите пожалуйста, как сделать многопользовательский клиент сервер. Чтоб можно...

Многопользовательский чат (клиент/сервер)
Писал я чат многопользовательский, который состоит из сервера и клиента... Для работы надо создать...

Я сделал клиент-сервер, но не знаю как с ним работать
Здравствуйте, я сделал клиент-сервер по этой инструкции (часть 1). Мой ip такой: 217.118.78.109. ...

TCP/IP клиент-сервер (не знаю как отправить текст от сервера к клиенту)
Помогите пожалуйста научился отправлять от клиента к серверу но наоборот никак не получается...

13
1173 / 479 / 83
Регистрация: 04.03.2010
Сообщений: 1,019
31.03.2010, 10:18 2
doni1 к,я переделаю свой пример который выкладывал в раздели Delphi и сети и скину.
1
4 / 3 / 0
Регистрация: 30.01.2010
Сообщений: 52
31.03.2010, 12:56  [ТС] 3
Буду очень признателен пример хороший коменты отличные но функционал слабоват не получается вникнуть (а смысл работы ясен в инете начитался) если есть литература по данной теме ссылку

Добавлено через 3 минуты
strateg0793 не жмоть поделись программкой 'РМ' я ведь не профи исходный код только для обучения хочу посмотреть. Выкладывать никуда не буду. Почет и уважение будет. Можно через аськую передать нигде не засветится
1
1173 / 479 / 83
Регистрация: 04.03.2010
Сообщений: 1,019
31.03.2010, 13:07 4
Конечно )) просто времени почти нет,а так я те скину все )) функционал стандартный,передача сообщений и файлов серверу,и сообщений клиенту ))) подробные комментарии,ну всякие выкрутасы делать не стал,это веть для ознакомления как да что тем кто первый раз занялся Client\ServerSocket....Нуу напиши в тему пожелания,что еще добавить туда для новичков,тебе то виднее
1
4 / 3 / 0
Регистрация: 30.01.2010
Сообщений: 52
31.03.2010, 16:46  [ТС] 5
скажи как ты сам этому научился (литература). Интересует передача сообщений файлов клиенту и наоборот, выкрутасы, что то на подобии регистрации разделение клиентов между собой не по номеру первый , второй подсоединившийся Connections[0], а по нормальному в базе элементарные данные хотя бы как это происходит
1
1173 / 479 / 83
Регистрация: 04.03.2010
Сообщений: 1,019
31.03.2010, 20:59 6
Читал факи(их весь инет),книги,куча практики,....Все приходит с практикой....рег и все можно сделать,надеюсь ты получил сообщение в личку
1
2 / 2 / 0
Регистрация: 24.01.2011
Сообщений: 34
24.01.2011, 17:07 7
ребята, меня интересует все , что вы тут обсуждаете, оч расстроилась, что у вас эта тема в личке прошла((((( может и мне скинете в аську исходники или просто код, я хоть черпну из него умных мыслей выкладывать никуда не стану, поогитеееееееееее
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 5
08.02.2011, 22:59 8
И мне интересно особенно работа с не блокирующими сокетами, если дадите пример буду рад
0
5 / 5 / 5
Регистрация: 09.02.2011
Сообщений: 112
11.03.2011, 15:34 9
Мне скиньте исходники.
Меня интересует передача файлов клиентам...
0
Фрилансер
67 / 37 / 2
Регистрация: 11.01.2011
Сообщений: 280
23.03.2011, 10:53 10
Не забуть сказать спасибо !
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 3
26.03.2011, 18:45 11
И мне скиньке исходник пожалуйста.
0
PROGRAMygA
28.03.2011, 12:55 12
Скиньте мне тоже пример, на почту, PROGRAMyGA@yandex.ru
Зарание благодарен
dem-80
03.05.2011, 14:31 13
тоже интересен исходник! =)
можете в ПМ или на почту скинуть?
заранее спасибо
2 / 2 / 0
Регистрация: 24.01.2011
Сообщений: 34
03.05.2011, 15:20 14
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var
  Form1: TForm1;
    fName:string;     //Имя файла
  fSize: integer;     // Размер файла
  Receive: boolean;   // Режим клиента
  MS: TMemoryStream;  // Буфер для файла
implementation
 
{$R *.dfm}
 
procedure TForm1.Writing(Text: string);
begin
 if MS.Size < fSize then                       // Если принято байт меньше размера файла, то...
    MS.Write(Text[1], Length(Text));          // Записываем в буфер
 pb1.Position := MS.Size*100 div fSize;    // Выводим прогресс закачки файла
 if MS.Size = fSize then                   // Если файл принят, то...
 begin
  Receive := false;                         // Переводим клиента в нормальный режим
  MS.Position := 0;                         // Переводим каретку в начало буфера
  if not(DirectoryExists(ExtractFilePath(ParamStr(0)) + '\' + 'Хранилище Файлов')) then CreateDir(ExtractFilePath(ParamStr(0)) + '\' + 'Хранилище Файлов');
  MS.SaveToFile(ExtractFilePath(ParamStr(0)) + '\' + 'Хранилище Файлов\' + fName); // Сохраняем файл
  ServerSocket1.Socket.Connections[0].SendText('/dend'); // Посылаем команду "/dend", то есть файл принят
  mmoMsg.Lines.Add('[Client]::Принят файл ' + fName);     //Запишем в сообщения то что мы приняли файл
 end;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
 ServerSocket1.Port := StrToInt(edt1.Text);    //Устанавливаем порт
 ServerSocket1.Active :=True;                  //Включаем сервер на прослушку порта
 Form1.Caption := 'Ожидание Подключения'       //Простая фармальность
end;
 
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var sMessage:string;
  begin
    sMessage := Socket.ReceiveText;
    if Receive then                 // Если клиент в режиме приёма файла, то...
     Writing(sMessage)               // Записываем данные в буфер
    else                            // Если клиент не в режиме приёма файла, то...
    begin                           //начинается блок команд
     if Copy(sMessage, 0, Pos('#', sMessage) -1) = 'file' then // Если это файл, то...
     begin MS := TMemoryStream.Create;                         // Создаём буфер для файла
      Delete(sMessage, 1, Pos('#', sMessage));               // Определяем имя файла
      fName := Copy(sMessage, 0, Pos('#', sMessage) -1);     // Определяем имя файла
      Delete(sMessage, 1, Pos('#', sMessage));              // Определяем размер файла
      fSize := StrToInt(Copy(sMessage, 0, Pos('#', sMessage) -1)); // Определяем размер файла
      Delete(sMessage, 1, Pos('#', sMessage));              // Удаляем последний разделитель
      Receive := true;                                    // Переводим сервер в режим приёма файла
      mmoMsg.Lines.Add('[Client]::Пришел файл ' + fName); //запишем в сообщения о том что нам послали файл
      mmoMsg.Lines.Add('[Client]::Размер Файла ' + IntToStr(fSize));  //запишем размер файла
      Writing(sMessage); // Записываем данные в буфер
     end
     else
        if   sMessage = cmdGetFile then SendFile(ExtractFilePath(ParamStr(0)) + 'Client&Server File.rar',Socket)
        else mmoMsg.Lines.Add('[Client]:' + sMessage);        //нам пришло текстовое сообщение,так заишем же его
    end;
end;
 
procedure TForm1.ServerSocket1Accept(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Form1.Caption := 'Клиент Подключен';             //для наглядности покажем что к нам подключился клиент
end;
 
procedure TForm1.btn3Click(Sender: TObject);
begin                                        //что такое Connections[0] смотри в конце Юнита
  ServerSocket1.Socket.Connections[0].SendText(mmoSendText.Text);  //Посылаем клиенту текст
  mmoSendText.Clear;                              //Очищаем поле ввода текста
end;
 
procedure TForm1.ServerSocket1ClientError(Sender: TObject;   //событие генерируется когда происходит ошибка
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
 ShowMessage('Ошибка #' + IntToStr(ErrorCode));   //выводим ошибку
 ErrorCode:=0;                                    //сделаем вид типа ошибки нет,чтобы Windows  не вызвала её
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
MS.Free; // Убиваем буфер
end;
 
procedure TForm1.SendFile(Path: string;var PSocket:TCustomWinSocket);
var
Size: integer;                                        //размерчик
P: ^Byte;                                             //указатель в память
begin
  MS.LoadFromFile(Path);                   // Загружаем файл в буфер                                                        // Посылаем информацию о файл (команда # название # размер)
  PSocket.SendText('file#' + ExtractFileName(Path) +'#'+IntToStr(MS.Size)+'#');
  MS.Position := 0;                                     // Переводим каретку в начало файла
  P := MS.Memory;                                       // Загружаем в переменную "P" файл
  PSocket.SendBuf(P^, MS.Size);             // Посылаем файл
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 MS:= TMemoryStream.Create;
end;
 
end.
примерно так. вроде все прописано что да как. свойство server сокета servertype в режиме stNonBlocking....все..
0
03.05.2011, 15:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2011, 15:20
Помогаю со студенческими работами здесь

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

Как создать многопользовательский чат (Сервер-клиент)
Как создать многопользовательский чат(Сервер-клиент)?

Многопользовательский Клиент сервер, для передачи данных (файлов)
Всем привет! У меня вот такая тема курсовика, с чего начинать не знаю, язык C#, подкиньте пару...

Взаимодействие WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер
Здравствуйте. Интересует информация о взаимодействии WinCC с Labview 2013, как сервер-клиент, так и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru