Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2011, 15:18   #641
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от darek13 Посмотреть сообщение
Я организовал отправку файлов с клиента на сервер, через сокеты, но сервер принимает за раз только 1 поток, какой нужен компонент что бы сервер мог принимать файлы сразу от нескольких клиентов, и имел возможность при приеме файлов, сам отсылать их? Возможно ли таое вообще ?
TServerSocket имеет событие OnClientRead. При чтении пакета запроса клиента создается свой экземпляр события, т.е. это многопоточность. Создавай в этом событии код обработки, связанный только с приемом/передачей файлов, с проверкой подлинности (событие возвращает сокет, который вызвал событие).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 07.06.2011, 09:50   #642
vipkursk
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию Application.Title:=Caption

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Используйте восстановление заголовка (назначьте сново заголовок) в конце таймера сканирования у сервера и чтения пакета у клиента.
Не могу найти код, который изменяет Caption у формы. Удалил все Application.Title:=Caption, а название формы все равно меняется. Или я туплю с утра
vipkursk вне форума Ответить с цитированием
Старый 07.06.2011, 15:33   #643
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Сообщение #621 прочти, там описана причина смены Caption формы.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 09.06.2011, 13:13   #644
darek13
Пользователь
 
Аватар для darek13
 
Регистрация: 27.04.2011
Сообщений: 68
По умолчанию

Beermonza
Подскажи пжл, как у тебя в коде клиена в процедуре
procedure TForm2.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
можно узнать ник пользователя который прислал сообщение тебе, до того как сообщение появится в ChatRichEdit, ник можно запомнить в какой то переменной например niktemp:string;
А то я сделал так что бы при приходе личного сообщения на клиенте создаваль новая страница с его сообщениями, но вот имя страницы надо что бы было ник пользователя, а вот присвоеть этот ник странице не получается.
Создание страницы в PageControl осуществляется в команде №3 procedure TForm2.ClientSocket2Read
Код:
 3: begin
        TabSheet := TTabSheet.Create(Self);
        TabSheet.Caption :=???????;
        TabSheet.PageControl := PageControl1;

        RichEdit := TRichEdit.Create(Self);
        RichEdit.Parent := TabSheet;
        RichEdit.Align := alClient;

        ToolBar := TToolBar.Create(Self);
        ToolBar.Parent := TabSheet;
        ToolBar.Align := alTop;

        TabSheet.ImageIndex:=0;
        RichEdit.Text :=('' + Copy(txt,7+Length(Nik),len-Length(Nik)-1));
       end;
Вот что где ?????? нужно вставить за параметр?

Последний раз редактировалось darek13; 09.06.2011 в 15:10.
darek13 вне форума Ответить с цитированием
Старый 09.06.2011, 15:09   #645
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от darek13 Посмотреть сообщение
Beermonza Подскажи пжл, как у тебя в коде клиена в процедуре procedure TForm2.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); можно узнать ник пользователя который прислал сообщение тебе, до того как сообщение появится в ChatRichEdit, ник можно запомнить в какой то переменной например niktemp:string;
Посмотри серверный код на прием приватного сообщения, case: 3. Там в пакет привата вшит отправитель отдельно, можно вытащить вот так:

Код:
  // укажем начальный символ
  pos := 6;
  // обнулим счетчик символов
  x := 0;

  // пробегаем по длине принятой строки
  For j := pos to len + 1 do
    Begin
      // записываем в счетчик сдвиг
      Inc(x);

      // если найден ключ (конец части ника в строке)
      If Copy(nettext, j, 1) = Chr(152) then
        Begin
          // сохраняем ник приватного пользователя
          niktemp := Copy(nettext, pos, x-1);

          // сброс цикла
          break;
        end;
    end;
Смотри сам, может тебя не устраивает структура пакета, ...меняй последовательность составных частей, выкидывай лишнее, но не запутайся.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 09.06.2011, 15:17   #646
darek13
Пользователь
 
Аватар для darek13
 
Регистрация: 27.04.2011
Сообщений: 68
По умолчанию

ну так это ж на сервере, а на клиенте как: у меян отдельно севре от клиента
darek13 вне форума Ответить с цитированием
Старый 09.06.2011, 15:21   #647
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Я тебе сказал скопировать часть кода сервера в клиент, ...код тот, что показал, его засунь в клиента на прием приватного сообщения.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 09.06.2011, 15:23   #648
darek13
Пользователь
 
Аватар для darek13
 
Регистрация: 27.04.2011
Сообщений: 68
По умолчанию

На сервере я понял где и как, а как вылучить из стоки той что приходил на клиент с личным сообщением
у тебя она
Код:
ShowColorMassage(Copy(txt,1,5)+Copy(txt,7+Length(Nik),len-Length(Nik)-1), 1);
у меян сейчас
Код:
RichEdit.Text :=('' + Copy(txt,7+Length(Nik),len-Length(Nik)-1));
вот как записать ник отправителя личного сообщения в TabSheet.Caption :=???????;
darek13 вне форума Ответить с цитированием
Старый 09.06.2011, 15:35   #649
darek13
Пользователь
 
Аватар для darek13
 
Регистрация: 27.04.2011
Сообщений: 68
По умолчанию

Я только что сделал так и все отличо рабоатет, выделяет ник, но он почему то выделяет свой же ник, т.е. создается вкладка как показано на рисунке
Изображения
Тип файла: jpg Client.jpg (25.5 Кб, 153 просмотров)
darek13 вне форума Ответить с цитированием
Старый 09.06.2011, 15:38   #650
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от darek13 Посмотреть сообщение
На сервере я понял где и как, а как вылучить из стоки той что приходил на клиент с личным сообщением
у тебя она
Код:
ShowColorMassage(Copy(txt,1,5)+Copy(txt,7+Length(Nik),len-Length(Nik)-1), 1);
у меян сейчас
Код:
RichEdit.Text :=('' + Copy(txt,7+Length(Nik),len-Length(Nik)-1));
Так же как на сервере, так и у клиента, ...сервер транслирует пакет не изменяя его, показал код, его и помести в клиент.

Код:
ShowColorMassage(Copy(nettext,1,5)+Copy(nettext,7+Length(NikEdit.Text),len-Length(NikEdit.Text)-1), 1);
...этот код экономит время, ...все равно ник в пакете равен твоему (сервер не ошибается), легче взять твой ник не перебором из пакета, а прямо с твоего окошка ника.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Создание клиент-сервера Pblog Обсуждение статей 0 03.10.2007 17:12
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл Pblog Обсуждение статей 0 31.08.2007 20:00
обновление в блоге - USB Холодильник Pblog Обсуждение статей 0 25.06.2007 14:13
обновление в блоге - О ярлыках Pblog Обсуждение статей 0 27.05.2007 03:17