Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.03.2012, 17:01   #1
Maxxxtri23
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 17
Репутация: 19
По умолчанию Соединение 2х сокетов

В программе на Delphi есть ClientSocket1 и ClientSocket2. Как перенаправить данные приходяшие данные на 1 сокет во 2й на оборот. То есть должно получиться что-то вроде туннеля.
Попытаюсь объяснить на схеме:
Maxxxtri23 вне форума   Ответить с цитированием
Старый 12.03.2012, 18:39   #2
Лубышев
ZlojDeveloper
Профессионал
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Адрес: Самара
Сообщений: 1,027
Репутация: 235

skype: zlojvirus89
По умолчанию

А если сделать наоборот? пусть сервера юзают ClientSocket а клиент ServerSocket??? разницы то ни какой по сути
__________________
Писано по д'Эльфийски
Лубышев вне форума   Ответить с цитированием
Старый 12.03.2012, 18:43   #3
Maxxxtri23
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 17
Репутация: 19
По умолчанию

Нужно именно так как на схеме
Maxxxtri23 вне форума   Ответить с цитированием
Старый 12.03.2012, 18:46   #4
Лубышев
ZlojDeveloper
Профессионал
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Адрес: Самара
Сообщений: 1,027
Репутация: 235

skype: zlojvirus89
По умолчанию

Дело в том что ServerSocket имеет набор сокетов а клиент тока один
но можно сделать так - по событию приема пакета с первого клиентсокета хватать то что пришло и тут же отправлять вторым клиент сокетом
__________________
Писано по д'Эльфийски
Лубышев вне форума   Ответить с цитированием
Старый 12.03.2012, 18:50   #5
Maxxxtri23
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 17
Репутация: 19
По умолчанию

Да это понятно. Я думаю что тут как надо сделать чтобы данные приходящие на 1 сокет клались куда то в буфер или память и из неё пересылались уже 2м сокетом, вот только как это сделать я не знаю
Maxxxtri23 вне форума   Ответить с цитированием
Старый 12.03.2012, 18:53   #6
Лубышев
ZlojDeveloper
Профессионал
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Адрес: Самара
Сообщений: 1,027
Репутация: 235

skype: zlojvirus89
По умолчанию

Пакеты фиксированной длинны? есть структура у пакета иль просто набор битовый? ото у меня примерно такая же загвозга получается в теме что по соседству)
там есть примерное решение - но оно критует) если проблема у меня там решится то у тебя тут тоже автоматически решится)
__________________
Писано по д'Эльфийски
Лубышев вне форума   Ответить с цитированием
Старый 12.03.2012, 18:56   #7
Maxxxtri23
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 17
Репутация: 19
По умолчанию

Нет пакеты все разные
Maxxxtri23 вне форума   Ответить с цитированием
Старый 12.03.2012, 19:06   #8
Лубышев
ZlojDeveloper
Профессионал
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Адрес: Самара
Сообщений: 1,027
Репутация: 235

skype: zlojvirus89
По умолчанию

Может как то так получится
Код:
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var buf:TmemoryStream;
size:integer;
begin
buf:=Tmemorystream.Create;
size:= Socket.ReceiveLength;
Socket.ReceiveBuf(buf,size);
form1.Client2.Socket.SendBuf(buf,size);//тута наверное крит получишь
//возможно надо сдвинуть позицию курсора на начало buf.position:=0; но мне эт не помогло
хотя я думаю что кританет. я что то видел в одной из тем сдесь что лучше в качестве буффера глобальную переменную юзать - тока ее над наверное постоянно чистить после передачи пакета... ото будет забиваться
__________________
Писано по д'Эльфийски
Лубышев вне форума   Ответить с цитированием
Старый 12.03.2012, 19:33   #9
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,004
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

в обработчике OnRead первого сокета пишем примерно это:
Код:
var buf:array of byte;
begin
 SetLength(buf,Socket.RecieveLength);
 Socket.RecieveBuf(buf[0],Length(buf));
 ClientSocket2.Socket.SendBuf(buf[0],Length(buf));
аналогичное у второго сокета.
Цитата:
хотя я думаю что кританет
кританет?
более похоже на всяких игр.

AV вылетит, ибо вы переписываете обьект, а не его данные.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 12.03.2012 в 19:36.
Пепел Феникса вне форума   Ответить с цитированием
Старый 12.03.2012, 19:53   #10
Лубышев
ZlojDeveloper
Профессионал
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Адрес: Самара
Сообщений: 1,027
Репутация: 235

skype: zlojvirus89
По умолчанию

О... в моем проблеме http://www.programmersforum.ru/showthread.php?t=191132 возможно это тоже поможет. спасибо большое. тогда вот вопросик такой: а как из этого массива прочитать в переменную некого типа данных
__________________
Писано по д'Эльфийски
Лубышев вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование сокетов Anubys C/C++ Сетевое программирование 5 26.11.2011 00:33
Динамическое распределение сокетов (С#) Lightsaber Помощь студентам 1 29.09.2011 09:40
Программирование сокетов Win vadakoff C/C++ Сетевое программирование 2 14.10.2010 23:35
правильность закрытия сокетов i-cpp C/C++ Сетевое программирование 3 16.02.2010 20:13
Организация сокетов mar4elo Работа с сетью в Delphi 1 01.01.2009 17:50


03:17.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.