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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2016, 22:32   #1
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию ClientSocket делфи

Всем привет. Сделал я свой чат с использованием компонента ClientSocket. Чат с пересылкой файлов. Вопрос: когда я передаю файл клиенту(я сервер) я ему не могу не чего писать тк клиент занят приемом файла. Подскажите как сделать что бы переписка не мешала скачиванию файлов?
Legeardo вне форума Ответить с цитированием
Старый 12.12.2016, 23:31   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Поднимайте для этого отдельный поток/порт.
p51x на форуме Ответить с цитированием
Старый 12.12.2016, 23:57   #3
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию

Надо 2 клиент сокета и клиент сервера? 1 допустим для сообщений а второй для файлов?
Legeardo вне форума Ответить с цитированием
Старый 13.12.2016, 02:58   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

В простейшем варианте - да. Нужны два соединения клиента с сервером через разные порты.
northener вне форума Ответить с цитированием
Старый 13.12.2016, 06:54   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Как-то так
Вложения
Тип файла: zip Передача файлов через Indy Delphi XE10.zip (142.5 Кб, 9 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 13.12.2016, 15:42   #6
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
В простейшем варианте - да. Нужны два соединения клиента с сервером через разные порты.
А как сделать так что бы клиентсокет мог работать на 2 портах?
Legeardo вне форума Ответить с цитированием
Старый 13.12.2016, 20:55   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Под "клиент" я имел в виду программу-клиент, а не клиентсокет.
northener вне форума Ответить с цитированием
Старый 13.12.2016, 23:15   #8
Legeardo
Пользователь
 
Регистрация: 04.10.2016
Сообщений: 76
По умолчанию

И как же это можно организовать?
Legeardo вне форума Ответить с цитированием
Старый 14.12.2016, 03:05   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

А что непонятно? Ты не можешь кинуть на форму более одного компонента TClientSocket?
northener вне форума Ответить с цитированием
Старый 14.12.2016, 06:09   #10
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

зачем еще сокет?
все можно в рамках одного сокета делать если правильно протокол обмена сделать
и передавать файл кусочками типа как https://ru.wikipedia.org/wiki/Chunked_transfer_encoding

loop{
передаешь кусочек файла.
проверяешь на прием и отправку сообщений}

так можно даже несколько файлов передавать

только кусочки файла и сообщения нужно маркировать чтобы потом разобраться что пришло

пример протокола
type [msg|file], id, chunk,chunkSize, totalchunks, data
и обмен будет выглядеть так:
>msg, 0, 0, 6, 1, Hello!
>file, 1, 0, 9, 10, filedata1
>file, 1, 1, 9, 10, filedata2
>file, 1, 2, 9, 10, filedata3
>msg, 1, 0, 18, 1, I send file to you
>file, 1, 3, 9, 10, filedata4
>file, 1, 4, 9, 10, filedata5
>file, 1, 5, 9, 10, filedata6
>file, 1, 6, 9, 10, filedata7
>file, 1, 7, 9, 10, filedata8
<msg, 1, 0, 34, 1, Hello! I see. Already downloading.
>file, 1, 8, 9, 10, filedata9
>file, 1, 9, 9, 10, filedata10
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 14.12.2016 в 06:13.
Slym вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ClientSocket Wervol'f Компоненты Delphi 3 05.06.2013 13:24
ClientSocket rule-z Работа с сетью в Delphi 52 29.06.2011 08:27
ClientSocket и ConsoleApplication FanRa3 Работа с сетью в Delphi 1 08.01.2011 18:11
ClientSocket AlexJan Компоненты Delphi 5 12.09.2010 08:08
ClientSocket misher Общие вопросы Delphi 2 09.07.2010 15:55