|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.12.2016, 22:32 | #1 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 76
|
ClientSocket делфи
Всем привет. Сделал я свой чат с использованием компонента ClientSocket. Чат с пересылкой файлов. Вопрос: когда я передаю файл клиенту(я сервер) я ему не могу не чего писать тк клиент занят приемом файла. Подскажите как сделать что бы переписка не мешала скачиванию файлов?
|
12.12.2016, 23:31 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Поднимайте для этого отдельный поток/порт.
|
12.12.2016, 23:57 | #3 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 76
|
Надо 2 клиент сокета и клиент сервера? 1 допустим для сообщений а второй для файлов?
|
13.12.2016, 02:58 | #4 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
В простейшем варианте - да. Нужны два соединения клиента с сервером через разные порты.
|
13.12.2016, 06:54 | #5 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,893
|
Как-то так
|
13.12.2016, 15:42 | #6 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 76
|
|
13.12.2016, 20:55 | #7 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
Под "клиент" я имел в виду программу-клиент, а не клиентсокет.
|
13.12.2016, 23:15 | #8 |
Пользователь
Регистрация: 04.10.2016
Сообщений: 76
|
И как же это можно организовать?
|
14.12.2016, 03:05 | #9 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
А что непонятно? Ты не можешь кинуть на форму более одного компонента TClientSocket?
|
14.12.2016, 06:09 | #10 |
Участник клуба
Регистрация: 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. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |