Вверх ↑
Этот топик читают: Гость
Ответов: 1731
Рейтинг: 68
#136: 2011-11-15 22:26:56 ЛС | профиль | цитата
[flood]У меня на WinXP SP2 ограничение 100 подключений было.
[offtop]Windows от Zver [/offtop][/flood]
карма: 1

0
Ответов: 171
Рейтинг: 19
#137: 2011-11-15 22:56:43 ЛС | профиль | цитата
А вот этот элемент на каждое соединение создает новый поток? или однопоточныйй, при тысячах соединениях не повиснит ли сервер?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#138: 2011-11-16 12:28:29 ЛС | профиль | цитата
Borka писал(а):
на каждое соединение создает новый поток
Именно по-этому
1nd1g0 писал(а):
основные ограничения зависят от ресурсов системы и свободных сокетов
Не просто новый поток, а отдельный экземпляр объектов внутри контейнера, которые выполняются в индивидуальном синхронизируемом потоке.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#139: 2014-03-27 04:13:12 правка | ЛС | профиль | цитата


Редактировалось 12 раз(а), последний 2025-01-08 04:08:59
карма: 0

0
Ответов: 115
Рейтинг: 3
#140: 2024-03-27 14:53:21 ЛС | профиль | цитата
В консольной версии компонент сервера "ex" не работает. Точнее ничего не приходит по точкам событий (onRead и остальным). Rлиент TCP/IP подключается и отправляет.
Add(Console,2953706,21,105)
{
link(onStart,13472313:doEvent1,[(177,111)(177,132)])
}
Add(DoData,840365,392,203)
{
Data=Integer(5000)
link(onEventData,16386042:##open,[])
}
Add(TCP_ServerEx,16386042,497,203)
{
ServerPort=0
}
BEGIN_SDK
Add(EditMultiEx,2608652,21,21)
{
WorkCount=#6:##open|7:##clear|0:|
EventCount=#6:onRead|
VarCount=#8:##handle|
DataCount=#6:handle|11:users_activ|
Width=1182
Height=704
VOffset=100
HOffset=100
Point(##clear)
Point(##handle)
}
Add(TCP_Connection,2402270,413,329)
{
Point(onError)
link(onRead,2608652:onRead,[(824,335)(824,127)])
link(onConnect,14080330:doMessage,[(475,342)(475,356)])
}
Add(Message,14080330,504,350)
{
}
END_SDK
Add(Message,7940413,602,231)
{
}
Add(LineBreakEx,15847247,301,91)
{
Caption="read"
Type=2
}
Add(LineBreakEx,7265733,21,147)
{
Caption="read"
Type=3
link(_Data,2953706:Read,[])
}
Add(MultiElementEx,13472313,301,126)
{
@Color=43690
link(OnEvent,7095097:doWork,[])
link(stop,2661389:doWork,[(345,146)(345,153)])
link(Read,15847247:getVar,[])
}
BEGIN_SDK
Add(EditMultiEx,8007036,21,21)
{
WorkCount=#8:doEvent1|9:doEvent11|8:doEvent3|
EventCount=#8:onEvent2|7:OnEvent|4:stop|
VarCount=#5:Value|
DataCount=#4:Read|
Width=902
Height=375
link(doEvent1,15347457:doEvent1,[(126,27)(126,153)])
link(doEvent11,97201:doEvent1,[(147,34)(147,223)])
link(Value,14074046:Value,[(27,298)(699,298)])
}
Add(Events,11701664,336,112)
{
}
Add(Repeat,547108,518,161)
{
Op1=Integer(1)
Op2=Integer(1)
link(onRepeat,12508822:doEvent1,[])
}
Add(InfoTip,9166088,420,70)
{
Info=#51:Ожидаем ввода от пользователя в параллельном потоке|
Width=372
Height=179
}
Add(LineBreakEx,5336089,259,154)
{
Caption="start"
}
Add(Hub,97201,273,217)
{
OutCount=3
link(onEvent1,8007036:stop,[(605,223)(605,41)])
link(onEvent2,547108:doStop,[(499,230)(499,174)])
link(onEvent3,11701664:doSet,[(311,237)(311,118)])
}
Add(Hub,15347457,231,147)
{
OutCount=4
link(onEvent2,5336089:doWork,[])
link(onEvent3,1495873:doStart,[])
link(onEvent4,2483187:doWait,[])
}
Add(StrPart,11467315,616,161)
{
Char=" "
Point(onNotFound)
link(onSplit,5072831:doValue,[])
link(onPart,4323167:doEvent1,[])
link(Str,8007036:Read,[(622,91)(27,91)])
link(onNotFound,4323167:doEvent2,[])
}
Add(Hub,4323167,665,168)
{
InCount=2
OutCount=1
link(onEvent1,14074046:doValue,[])
}
Add(Thread,1495873,448,161)
{
link(onExec,547108:doRepeat,[])
}
Add(Memory,14074046,693,168)
{
}
Add(Hub,12508822,560,161)
{
link(onEvent1,11467315:doSplit,[])
link(onEvent2,8007036:onEvent2,[(588,174)(588,27)])
}
Add(GlobalVar,5072831,763,161)
{
@Color=11206570
Name="port"
Data=String()
}
Add(InfoTip,10332495,189,56)
{
Info=#17:Не даём программе|23:завершиться без команды|
Width=204
Height=193
}
Add(WaitObject,2483187,336,168)
{
link(ObjHandle,11701664:ObjHandle,[])
}
Add(LineBreakEx,16386581,861,28)
{
Caption="start"
Type=1
link(OnEvent,8007036:OnEvent,[])
}
END_SDK
Add(LineBreakEx,7095097,357,133)
{
Caption="start"
}
Add(LineBreakEx,2661389,357,147)
{
Caption="stop"
}
Add(LineBreakEx,5603835,301,168)
{
Caption="cmd"
Type=3
link(_Data,13472313:Value,[])
}
Add(LineBreakEx,16020608,329,203)
{
Caption="start"
Type=1
link(OnEvent,840365:doData,[])
}
Add(DoData,6668842,553,217)
{
Data=String(ok)
link(onEventData,2953706:doWrite,[(611,223)(611,167)(9,167)(9,111)])
}


Редактировалось 1 раз(а), последний 2024-03-27 14:54:05
карма: 0

0
Ответов: 4633
Рейтинг: 749
#141: 2024-03-27 21:37:40 ЛС | профиль | цитата
Не работает в невизуальных приложениях, потому что основан на оконных сообщениях. А там нету цикла обработки сообщений.
карма: 26

1
Голосовали:strannik_nebes
Ответов: 115
Рейтинг: 3
#142: 2024-06-20 13:15:19 ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2024-06-20 13:43:30
карма: 0

0
Ответов: 115
Рейтинг: 3
#143: 2024-06-21 09:42:56 ЛС | профиль | цитата
Всех приветствую. Столкнулся с необычным явлением в работе данного компонента с клиентом с типом данных Stream.
Если отправлять на сервер посылки от клиента частотой менее 300 мс, сервер получает не 2 посылки, а 3, причем, если отправить параллельно еще от сервера, то сервер зацикливается и молотит на приеме первую посылку пока не выскочит сообщение: что нельзя уничтожать копию из потока, а после этого runtime 216 (203)...
Это ошибка компонента?

Сервер
Add(MainForm,2953706,210,252)
{
link(onCreate,6926430:doData,[])
}
Add(TCP_ServerEx,12488255,525,336)
{
ServerPort=5001
link(onRead,9346091:doMessage,[])
link(IDC,12488255:##handle,[(531,324)(535,324)(535,380)(538,380)])
link(onconnect,7146650:doSynchronize,[(583,349)(583,461)])
link(onDisconnect,3608743:doSynchronize,[(583,356)(583,496)])
}
BEGIN_SDK
Add(EditMultiEx,5222853,21,21)
{
WorkCount=#6:##open|9:##hselect|6:do_cmd|
EventCount=#6:onRead|9:onconnect|12:onDisconnect|
VarCount=#10:IDC_client|8:##handle|
DataCount=#3:IDC|
Point(##hselect)
Point(##handle)
link(do_cmd,11416243:doConvert,[(35,41)(35,111)])
link(IDC_client,15163308:Value,[(27,179)(181,179)])
}
Add(TCP_Connection,16139110,105,98)
{
DataType=3
link(onRead,7310823:doConvert,[])
link(onConnect,15163308:doValue,[])
link(onDisconnect,5222853:onDisconnect,[(229,118)(229,41)])
}
Add(Memory,15163308,175,105)
{
Point(Data)
link(onData,5222853:onconnect,[(264,111)(264,34)])
link(Data,5222853:IDC,[(181,63)(27,63)])
}
Add(StreamConvertor,11416243,49,105)
{
Mode=7
link(onResult,16139110:doSend,[])
}
Add(StreamConvertor,7310823,238,98)
{
Mode=6
link(onResult,5222853:onRead,[(285,104)(285,27)])
}
END_SDK
Add(DoData,14547041,308,343)
{
link(onEventData,12488255:##hselect,[])
link(Data,12488255:IDC_client,[(314,331)(377,331)(377,380)(531,380)])
}
Add(Hub,10480729,280,343)
{
link(onEvent1,14547041:doData,[])
link(onEvent2,3061428:doData,[])
}
Add(DoData,3061428,364,350)
{
Data=String(привет от сервера!)
link(onEventData,12488255:do_cmd,[])
}
Add(Button,14951833,225,343)
{
Left=55
Top=80
Caption="сервер"
link(onClick,10480729:doEvent1,[])
}
Add(Message,9346091,658,336)
{
Caption="Сервер"
}
Add(DoData,6926430,273,266)
{
Data=Integer(5001)
link(onEventData,12488255:##open,[(369,272)(369,342)])
}
Add(LED,9683659,665,441)
{
Left=215
Top=20
}
Add(Synchronize,7146650,609,455)
{
link(onSync,9683659:doOn,[])
}
Add(Synchronize,3608743,609,490)
{
link(onSync,9683659:doOff,[(653,496)(653,454)])
}

клиент
Add(MainForm,2953706,21,105)
{
link(onCreate,14146200:doOpen,[(338,125)(338,202)])
}
Add(TCP_Client,14146200,623,196)
{
Port=5001
IP="127.0.0.1"
DataType=3
link(onRead,4598029:doConvert,[])
link(onConnect,9683659:doOn,[(688,209)(688,230)])
link(onDisconnect,9683659:doOff,[(688,216)(688,223)])
}
Add(Button,4403601,287,203)
{
Left=175
Top=80
Caption="клиент"
Data=String(Привет от клиента!)
link(onClick,73741:doEvent1,[])
}
Add(LED,9683659,721,210)
{
Left=215
Top=20
}
Add(Message,13702141,819,196)
{
}
Add(Hub,73741,385,203)
{
link(onEvent1,106804:doWork2,[])
link(onEvent2,12356732:doTimer,[])
}
Add(HubEx,106804,469,203)
{
link(onEvent,13373460:doData,[])
}
Add(DoData,13373460,490,203)
{
Data=String(Привет от клиента!)
link(onEventData,14512349:doConvert,[])
}
Add(Timer,12356732,420,210)
{
Interval=200
Enable=1
AutoStop=1
link(onTimer,106804:doWork3,[(473,216)])
}
Add(StreamConvertor,14512349,553,203)
{
Mode=7
link(onResult,14146200:doSend,[(604,209)(604,216)])
}
Add(StreamConvertor,4598029,770,196)
{
Mode=6
link(onResult,13702141:doMessage,[])
}


Редактировалось 3 раз(а), последний 2024-06-21 10:04:21
карма: 0

0
Ответов: 808
Рейтинг: 174
#144: 2024-06-22 05:34:45 ЛС | профиль | цитата
strannik_nebes писал(а):
Это ошибка компонента?

Нет.
Если на сервере выводить всё в Memo то проблем, указанных тобой выше, не будет.
Сервер

Add(Label,9555241,231,21)
{
Left=230
Top=20
Height=40
Align=2
Caption=""
AutoSize=1
}
Add(Memo,14240064,560,147)
{
Left=550
Top=160
Align=5
ScrollBars=3
}
Add(MainForm,16641521,161,133)
{
link(onCreate,12488255:##open,[])
}
Add(TCP_ServerEx,12488255,441,147)
{
ServerPort=5001
link(onRead,14240064:doAdd,[])
link(onconnect,9683659:doOn,[(480,160)(480,209)])
link(onDisconnect,9683659:doOff,[(501,167)(501,202)])
}
BEGIN_SDK
Add(EditMultiEx,5222853,21,21)
{
WorkCount=#6:##open|9:##hselect|6:do_cmd|
EventCount=#6:onRead|9:onconnect|12:onDisconnect|
VarCount=#10:IDC_client|8:##handle|
DataCount=#3:IDC|
Point(##hselect)
Point(##handle)
link(do_cmd,11416243:doConvert,[(35,41)(35,111)])
link(IDC_client,15163308:Value,[(27,179)(181,179)])
}
Add(TCP_Connection,16139110,105,98)
{
DataType=3
link(onRead,7310823:doConvert,[])
link(onConnect,15163308:doValue,[])
link(onDisconnect,5222853:onDisconnect,[(229,118)(229,41)])
}
Add(Memory,15163308,175,105)
{
Point(Data)
link(onData,5222853:onconnect,[(264,111)(264,34)])
link(Data,5222853:IDC,[(181,63)(27,63)])
}
Add(StreamConvertor,11416243,49,105)
{
Mode=7
link(onResult,16139110:doSend,[])
}
Add(StreamConvertor,7310823,238,98)
{
Mode=6
link(onResult,5222853:onRead,[(285,104)(285,27)])
}
END_SDK
Add(DoData,14547041,238,210)
{
link(onEventData,12488255:##hselect,[(291,216)(291,160)])
link(Data,12488255:IDC_client,[(244,194)(447,194)])
}
Add(Hub,10480729,210,210)
{
link(onEvent1,14547041:doData,[])
link(onEvent2,3061428:doData,[])
}
Add(DoData,3061428,294,217)
{
Data=String(привет от сервера!)
link(onEventData,12488255:do_cmd,[(347,223)(347,167)])
}
Add(Button,14951833,155,210)
{
Left=35
Top=10
Caption="сервер"
link(onClick,10480729:doEvent1,[])
}
Add(Message,9346091,707,42)
{
Caption="Сервер"
}
Add(DoData,6926430,784,42)
{
Data=Integer(5001)
}
Add(LED,9683659,560,189)
{
Left=345
Top=5
}
Add(Synchronize,7146650,756,133)
{
}
Add(Synchronize,3608743,742,182)
{
}


Клиент

Add(MainForm,4077607,371,154)
{
link(onCreate,14146200:doOpen,[(627,174)(627,202)])
}
Add(TCP_Client,14146200,637,196)
{
Port=5001
IP="127.0.0.1"
DataType=3
link(onRead,4598029:doConvert,[])
link(onConnect,9683659:doOn,[(676,209)(676,223)])
link(onDisconnect,9683659:doOff,[])
}
Add(Button,4403601,371,210)
{
Left=175
Top=80
Caption="клиент"
Data=String(Привет от клиента!)
link(onClick,73741:doEvent1,[])
}
Add(LED,9683659,700,203)
{
Left=215
Top=20
}
Add(Message,13702141,833,196)
{
}
Add(Hub,73741,434,210)
{
link(onEvent1,106804:doWork2,[])
link(onEvent2,12356732:doTimer,[])
}
Add(HubEx,106804,518,210)
{
link(onEvent,13373460:doData,[])
}
Add(DoData,13373460,539,210)
{
Data=String(Привет от клиента!)
link(onEventData,14512349:doConvert,[])
}
Add(Timer,12356732,469,217)
{
Interval=100
Enable=1
AutoStop=5
link(onTimer,106804:doWork3,[(522,223)])
}
Add(StreamConvertor,14512349,588,210)
{
Mode=7
link(onResult,14146200:doSend,[])
}
Add(StreamConvertor,4598029,784,196)
{
Mode=6
link(onResult,13702141:doMessage,[])
}


В клиенте поставил 5 срабатываний таймера, для тестов.
карма: 16

0
Ответов: 115
Рейтинг: 3
#145: 2024-06-24 08:17:14 ЛС | профиль | цитата
В клиенте поставил 5 срабатываний таймера, для тестов.

У меня 6 срабатываний
карма: 0

0
Ответов: 808
Рейтинг: 174
#146: 2024-06-24 08:28:13 ЛС | профиль | цитата
strannik_nebes писал(а):

У меня 6 срабатываний

Естественно, на твоей схеме один сигнал идёт напрямую, без таймера 1+5 =6.
карма: 16

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