Вверх ↑
Этот топик читают: Гость
Ответов: 39
Рейтинг: 1
#1: 2009-05-24 21:03:46 ЛС | профиль | цитата
собственно в этом и проблема...
есть TCP сервер-к нему подключено например 5 клиентов, весь их список выводиться в столбик,Через точку IP в элементе Server TCP
хотелось бы отправлять данные именно на указанный ИП,а не всем сразу.
в дополнительных точках нашел такую точку как doSendByIp и пояснение...отсылает данные на порт на указанный IP ARG (Data, IP)

вот тут меня и смутило..
что за ARG? это вопрос номер один
и в каком формате надо отсылать данные,..думал что если написано (Data, IP) то надо туда писать например test, 192.134.1.1, но это уже от безисходности...заранее спс за пояснения к этой части элемента

карма: 1

0
Ответов: 3851
Рейтинг: 159
#2: 2009-05-24 21:14:28 ЛС | профиль | цитата
наверное, используя MT-технологию - code_13415.txt ..
карма: 0
начавший
1
файлы: 1code_13415.txt [934B] [173]
Голосовали:lisabon
Ответов: 39
Рейтинг: 1
#3: 2009-05-24 21:28:58 ЛС | профиль | цитата
спасибо огромное, даже не слышал про многомерный поток да,с ним все четко работает...

PS ARG все-же что такое...
карма: 1

0
Ответов: 3851
Рейтинг: 159
#4: 2009-05-24 21:32:18 ЛС | профиль | цитата
видимо подразумевается слово "аргумент"..
карма: 0
начавший
1
Голосовали:lisabon
Ответов: 39
Рейтинг: 1
#5: 2009-05-24 21:48:03 ЛС | профиль | цитата
хорошо,еще просьба помочь в следующем.
как сделать,чтобы при клике по LIstBOX,в котором содержаться IP (то есть подключенные клиенты),правой кнопой мыши,вылазило меню,ну как свойства,и там например отключить...и все, идет команда на выделенный ИП,плюс команда отключить..
как это реализовать..? я не говорю,как отключался,чтобы при посылке команды отключить...а как,чтобы из выделенного меню в List BOX взять ip , какбы присоединить данные в тот самый многомерный поток и отправить на него?..
то есть вот ну никак не могу привязать всплывающее окно,к выделенному IP
карма: 1

0
Ответов: 3851
Рейтинг: 159
#6: 2009-05-24 22:00:55 ЛС | профиль | цитата
ну, вот такой, например изврат - code_13416.txt
карма: 0
начавший
1
файлы: 1code_13416.txt [842B] [171]
Голосовали:lisabon
Ответов: 39
Рейтинг: 1
#7: 2009-05-24 22:14:22 ЛС | профиль | цитата
спасибо,.но что-то не то. хотелось бы именно отправку данных,и чтобы частью этих данных являлся выделенный пункт меню.
то есть повторюсь,выделяем в списке меню нужный нам IP, щелкаем по нему мышью,вылазиет всплывающее окно,там выбираем например отключить,и все,отключаеться.
вопрос пока открыт...
карма: 1

0
Ответов: 3851
Рейтинг: 159
#8: 2009-05-24 22:27:54 ЛС | профиль | цитата
в данном случае отключить клиента можно только "попросив" его самого сделать это. То есть при выборе тункта меню "отключить", сервак посылает выбранному клиенту особое сообщение с просьбой отключиться. Клиент, распознав такое сообщение, тупо генерит событие doClose.
------------ Дoбавленo в 22.51:
вот сервак

Add(MainForm,6678,329,119)
{
Left=312
Top=322
Height=215
link(onCreate,20680:doOpen,[])
}
Add(TCP_Server,20680,385,133)
{
Port=180
Point(doSendByIp)
link(onRead,4225999:doAdd,[(431,139)(431,83)])
link(onConnect,12624536:doAdd,[])
link(onDisconnect,3116593:doEvent1,[])
}
Add(MT_AddData,3877925,252,154)
{
PColor(onAdd,16711680)
link(onAdd,16328597:doWork2,[])
link(Data1,695799:Text,[(258,135)(237,135)])
link(Data2,4056195:Text,[(265,135)(286,135)])
}
Add(Edit,695799,231,91)
{
Left=65
Top=135
Text="данные"
}
Add(Edit,4056195,280,91)
{
Left=150
Top=135
Width=60
Text="127.0.0.1"
}
Add(Button,9197703,189,154)
{
Left=225
Top=135
link(onClick,3877925:doAdd,[])
}
Add(ListBox,12624536,525,140)
{
Left=30
Top=15
Width=75
Height=65
Font=[Arial,8,0,0,1]
Point(onMouseDown)
Point(String)
Point(doSelectString)
Point(Index)
link(onMouseDown,4117335:doEvent1,[])
}
Add(MouseEvent,3494615,658,154)
{
}
Add(Hub,4117335,581,154)
{
link(onEvent1,3494615:doClick,[])
link(onEvent2,5147414:doTimer,[(602,167)(602,209)])
}
Add(PopupMenu,14537455,658,196)
{
Menu=#9:отключить|
link(onClick,4493895:doEvent,[])
}
Add(IndexToChanel,4493895,707,196)
{
link(onEvent1,15718527:doAdd,[(747,202)(747,302)(282,302)(282,265)])
}
Add(Timer,5147414,609,203)
{
Interval=100
Enable=1
AutoStop=1
link(onTimer,14537455:doPopupHere,[])
}
Add(MT_AddData,15718527,294,259)
{
PColor(onAdd,16711680)
link(onAdd,16328597:doWork3,[(361,265)])
link(Data1,1567224:Value,[])
link(Data2,12624536:String,[(307,229)(552,229)])
}
Add(HubEx,16328597,357,147)
{
PColor(onEvent,16711680)
link(onEvent,20680:doSendByIp,[])
}
Add(Memory,1567224,294,189)
{
Default=String(слушай, отключись пожалуйста, очень тебя пршу..)
}
Add(RichEdit,4225999,476,77)
{
Left=135
Top=10
Width=120
Height=90
ScrollBars=3
}
Add(Hub,3116593,441,147)
{
link(onEvent1,12624536:doSelectString,[(463,153)(463,188)])
link(onEvent2,13412409:doData,[])
}
Add(DoData,13412409,476,154)
{
link(onEventData,12624536:doDelete,[])
link(Data,12624536:Index,[(482,130)(572,130)(572,204)(559,204)])
}

и клиент

Add(MainForm,2953706,357,196)
{
link(onCreate,96010:doOpen,[])
}
Add(Case,3589760,504,210)
{
Value=String(слушай, отключись пожалуйста, очень тебя пршу..)
link(onNextCase,14313:doAdd,[])
link(onTrue,7973874:doEvent1,[])
}
Add(TCP_Client,96010,441,210)
{
Port=180
IP="127.0.0.1"
link(onRead,3589760:doCase,[])
}
Add(ListBox,14313,595,210)
{
Left=265
Top=15
Width=110
Height=70
Font=[Arial,8,0,0,1]
}
Add(Edit,14281849,357,245)
{
Left=270
Top=100
Width=100
link(onEnter,96010:doSend,[(415,258)(415,230)])
}
Add(Hub,7973874,553,217)
{
link(onEvent1,96010:doClose,[(580,223)(580,189)(430,189)(430,223)])
link(onEvent2,2953706:doCaption,[(582,230)(582,300)(343,300)(343,202)])
}

, делал на скорую руку (показывает только принцип) - проверяй..
карма: 0
начавший
1
Голосовали:lisabon
Ответов: 39
Рейтинг: 1
#9: 2009-05-25 17:44:55 ЛС | профиль | цитата
да,вполне все понятно...реализовал. теперь вот столкнулся с такой задачей.
посмотрите коды
code_13431.txt
и клиентская часть
code_13432.txt
все упрочтил,оставил только эту функцию. при запуске,вобщем надо нажать соттусе сначала на сервере,потом на клиенте...,в серверной части нажимаем reload и обновляеться список IP в ListBOX --- это IP подключенных клиентов,то есть один единственный.. так вот,при нажатии на клиенте close он закрывает соединение -- одновременно очищаеться список LIstBOX
но при новом коннекте клиента,он почему то не добавляеться
почему же?
то есть как я задумывал...подключаеться клиент,обновляеться список,отключаеться -- он очищаеться---начинаеться заново перебор клиентов из массиива -- и выдает например уже не 3 подключенных,а 2..или если был один,то ничего.--когда этот клиент заново соединяеться,то он появляеться снова.

получаеться пока или они все тупо друг за другом добавляються в список,и те которые отключились тоже; или при очистке всего списка,не создаеться после этого ничего..что странно..
заранее спс)
карма: 1

0
файлы: 2code_13431.txt [2.1KB] [133], code_13432.txt [599B] [125]
Ответов: 3851
Рейтинг: 159
#10: 2009-05-25 18:29:44 ЛС | профиль | цитата
сервак - code_13433.txt, клиент - code_13434.txt, надеюсь кто нибудь пояснит, почему на точку doDisconnect пришлось повесить таймер..
карма: 0
начавший
1
файлы: 2code_13433.txt [1.8KB] [167], code_13434.txt [461B] [160]
Голосовали:lisabon
Ответов: 39
Рейтинг: 1
#11: 2009-05-25 19:40:50 ЛС | профиль | цитата
да,спасибо..нет не надо обьяснять,разобрался
карма: 1

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)