Вверх ↑
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
#1: 2013-11-20 20:18:59 ЛС | профиль | цитата
Хабом не получается, как еще можно сделать? Закрывает раньше и ничего не передается.

code_32378.txt
карма: 0

0
файлы: 1code_32378.txt [730B] [78]
Ответов: 313
Рейтинг: -9
#2: 2013-11-21 01:51:01 ЛС | профиль | цитата
mudfactory, так попробуй потом скажешь всё ок или нет.

code_32381.txt

карма: 0

0
файлы: 1code_32381.txt [773B] [84]
Ответов: 257
Рейтинг: -2
#3: 2013-11-21 05:12:29 ЛС | профиль | цитата
конечно нет. я уже по всякому пробовал, никак не прокатывает.
карма: 0

0
Ответов: 704
Рейтинг: 44
#4: 2013-11-21 11:48:21 ЛС | профиль | цитата
mudfactory писал(а):
конечно нет. я уже по всякому пробовал, никак не прокатывает.

Плохо пробуешь, смотри мой пример все работает.
Add(MainForm,2953706,84,259)
{
Width=597
Height=314
link(onCreate,14723045:doEvent1,[])
}
Add(ZLIB,43492,301,301)
{
link(onStream,5288767:doSend,[])
link(Stream,14697615:Var3,[(307,215)])
}
Add(TCP_Client,5288767,455,287)
{
Port=120
IP="127.0.0.1"
DataType=3
Point(onProgress)
link(onDisconnect,12213948:doMessage,[])
}
Add(Image,15396995,378,231)
{
Left=10
Top=30
Width=260
Height=190
}
Add(MemoryStream,3101145,245,168)
{
@Hint=#8:Картинка|
Stream=[ZIP3624000078DAD559698C545516A6AB41940651407163547043036A508C4BA2281A4C1CA2B8C5187F100C8A3B0663C405D408A292D191651C228C34D2F4BE776D5D7B55576F344DD380348B20DD2088E2BE2767BEEFBC771FAFCBA6759CC1C19B9CBCAA57EFBDFB9DEF7CE7DC735F5DFFD7F1E7F4D1311E7601EC12DBB2FA9CD5C78CE4F196992147703CF860AED4D7D7CB9F719C74D262193EFC69A9A9A9916FBFFDF64F837BEA549FF4E9B3486DC890D9E2F57A15FFF7DF7F2F3FFDF4D3518D7DE4C855C0FD0EEC1FB0A53270E01CC5FFDD77DFC90F3FFC203FFEF8E351E9C333CF344876F60A60A6BD0B5B06FBA7E4E4BCE4E0277683FF68F261C68C22605D09CBB58FFF72FC1830609EEABF27FC5F7CF185CC9DBBFEFF867BE7CE9D128D46E5AEBB88F97DD86AFB483FDE533F060C58E0E4AF5B3F3FFFFCB37CFEF9E7326244A58C1DDBFA8763DFB46993AC5FBF5ED2E9B4DC7E7B1EB0E6DBB6C6F66395C6222767A1F8FD7EF9E69B6FBAE1A77DF5D557327A7435AEAB839F7F5C8DDDB061836CDCB8517D58BB76AD4C9E5C080CC5301E0BD487ACAC3CB9F0C20A1933E6EF5250502A1F7DF4911303839F9A1A3FBE46F15B96922953361F31DC5BB76E55CC1D1D1DFA99D6D6D626B7DC5282B9CB6025EAC7D0A15572D55525382E414E3F27AB5717C9DEBD7B65CB962DAA191303FA72FDF55EDC93EEE6C3196734FECFB15F76D94AE57CFBF6EDF2E1871FAAF669F467D22462AF00E75572C1057E58AE783C2B34073C9E39B27C79A17CF9E597F2F5D75FEBBDBB77EF76E270DB6DFE5FE0477720D3A6C575BDF86FC7638F350057819C77DE0AD9B16387EA80F3D33A3B3B3516132756C8A0414168B914F57EA59D03561E7B3C2FCBD2A5F95A6B9803C4F4D9679F69EC786EDAB410AE49FFC287C993A39A1FBCE7F70EEAD7D274A95C7EF91AC5BB67CF1ED5028F34C663CA943239E59402F8596CE70173204F7DF078E6C9E2C56B5437E4DFACC3B45DBB76C9C30FFBE07BBD0BBB85FFEAAB23EA1F7DE0F13F19F3E6AD95638EE1FCACEBE5B02AB9F1C632D9B76F9F7CF2C9278EEDDEDD29AFBCE29561C3DED76BAC6B4BECFBF2B50E793C0B803F4FF11B0DB9D7E2F9F39372F6D9D5A83FF16EFA193D3AA271E2F5C47FF0E0C1DFEC87C55D916ABA4F1FD637AFDC7DB74F9F672C126947ED2897BE7D57C1D7D5F67595AE3C2ED4E7783C0B817FB5E2377C5213C687B7DE22F77139ED34BFFCE52F41C430A9F84F3E39AC7CF15AFACDFB3FFDF4D3DF88DFF0CEDAC6FCAA95071E08E9FC9D9D7B64D6ACA81C771CF1FA803F0FF8F3D5472B0615AA374B47F9F8FD2D79FBED5CBD97462C6E1F56AC6856FCE43D27278A7AEB97C18363D2BF7F18B9D6A9D7190D3106BF251FBA630FC122F2D45351A9AC5C2F175D64F9635900F8F281BF507D3914034B47595945D0C51279F3CD551A33A301A32362292A6A458D8D28E7463BE79F1F944B2E09486BEB7607BF89013FF7365E7A69B38DE31076723D664C11B0F27B54CF59BFD5E25C21F017AB2FEE180C19520D3D942237FE26AFBD962B9B376FD69CC9F4C1EFDF081FC3B82761FB90D4CF279C1041DFB75635C3EB0C7E1E7B1B0F3DB4C1E692D802A887C53896638E423BCE71DB87B0FAD0AF5F11F097DAF87DF8EC938B2F8EC8A8517972ECB1EF42FFF3C1C972ADB7EDEDED5AFFDD3ED4D56D818FB5367EB7C5A1AD755AAF59A78CFEE8436F63CA9416C4DD0FBCA598BF4CB9CECAAA450C4ABB3DDB8A4118E74BE04399FA3B706008B8CBED35A008F71502FF6BF2E28BEFCAFEFDFB954B62E13AF8F1C71F2B9EB6B61D72D659411737876CC18226D5CF81030774BD603EFF1AFE6BAF8D208FF2312FB510D3E7783C41F852E98A6FDCD1D1D0A1E5E0BC528E3FBE1A31E77D65AA7F8FA71439C8D8BD2173E62C53FCC4C13CA01FC463F5213B81DFDB03FE98CC9C99EA96BF8C1DD7D0DEC6E8D1D44ED0C66769323B3B082C5E27BFACF331AC3B71E4450DE2BF1A31A8B0F55F8DEB2B109772D491521CDF04FE77143BF54FEC2697F9BDB5B50DF8CB704FCCE62BE6E0BFF7DEA86ADFE42F7D600C7A1B8307876C6DC49D9AC03CE8D72FD00DFFD0A131F4CD0159B9D28F7D7A8DA3FFECEC1A68AF4A4E3CB1126B72058E8BE485172CFC8C41A60F3C376A54019E5782B8D7BA7C88C94D37859C3C31F87F4D3FD4BA75BFA9672970EFB36B4F0ABF27309F57962D6BD4B99B9B9BA11BAFE2CFCE66DE78517B6AE4F4D3ABE59C73AAD14BBE23B3672F55BD1BFCF4C5F8C0CF63C75668BC070DAAC47DD4A2C5FFB871B57A9DC16EF0F7F62EC3E23E6163B7FA918103BD5AA3070DF2CBD34FA7A4AB6BBF3E8BCF267EFEEEF130C7FDC0EE0366BFF6A1E3C605A0C7E5F2E4934BB477227EB70F2617AEBBAED2E1DCE309612D2EC7FDB55807424E9EBBF1535387C71F75716FE13FF5D46AB9F5D600F62D5DBA66528F663D6F6C6C52CEFBF7AF451C82E02FA8735F714518F18FA2EFCE05FEC59A77C442FD66C6E1CE3BBD19FA8FA15EF8706F397AF45D3A97DB7A5BC3DCDAF178E2886539FAD042A75F61EC184F6A97F3A7D38DD0AD17B10941EF21F4D961608FCACD3727D01BD7CBA597BE87982DD37AC37ED58DDFF8307D7A00B18B21C7C87F0C1AB57CE8DB37087E5AE5830F3E503F0DFEDEFA382B6F13F0BF0ABC96E15971E8C0ABD8D9F39A7E90B1E7FCC964137CF4A10685D04786712DF7F3F5E0BC41264C28C6DA9B46BDDFAA359FF5AFABABEB173178F4D1006217C37CE43D867A1CD778783C11F0D3A1D7719FC4FD12793B5C0ECF9EBD0DF75683CF22DC1F72FAD91B6E08287ED30BF219E48318128966D4181F7413461EC6B0EF4802BF5F5E7E3985B56A9FD3AFF1B86DDB36F5836BB1DB8759B382F03F0A1FE2A87F71ADCBECA7FBF78F4945C5069D8F66D670EE3F7A1A8F3C520FFC55DD6A0FED8E3BC2AA9B4CEE8921166BC6DC3EE45C106B41B93CFB6C0238F73A3C65EA96F7B217229FCC07F2FFDC7321ED97870F4FE098403D4EA00E24E04B027BCF16073FCDECDD7A1A1326B4B8EAFE219B3E3DD66D1F61B8E7FC81403DF2BB481E7F3C025C5DDDF608C6DCF31BBFC821F7FE5C83E7CD8B00732DFABDA49C79661247EEE153786E4ADE78A3B1C767F4BCF6D6BBD63FABD7F17812E034D56D0F61B033AFE2F13434B4C9A985C6C86BA6659EE773F82E66D1A220F82E85B166A6502FEA80252DE79E9B96E79F4FF7889FF52473507F87F05B96939394575FAD53EC7C0EE764FCF8EE8AF584E799933CC7FC72EF2F8D99BA6F8CBE3317F83EE5501FB75DA64EAD411C2AE4CA2BEBE59A6B9AB1E76E421D48F688BFA77D8CE9F7AD35C0B2E1C353BAC72377C4C798B3A735796038E591FE500FDCD39B5ACF238D7AA19FC46C70F31E5E638CBE45A36D586BCAB1DF8EC98C199BD0C3D539FB06B7F5B40658F8C32E8B20A651EC5F131A67D63FF26DF2C86077F3CC2371525B34D60CFACB9CA56FF48358CD3B0C5E4BE3FA6CDECB709EC2C214D6BF52B9E71EBF136733F7E1F6F256DF19722C3B3B80FD6295141737E8F34DFE666227EE4CAE392735525DDD20F3E747113BEBDD0B9FE3C66AF62734C6D7F4C8F4B5A9A9590A0A22D8E3D4E9EFEE5AD6530E5B3D24DF01B09E57C8C2854DC077506B0FF151E37CB659770C7637662B1776C0E7B572DF7D49E82F821AE09391232B51679288C336E7DD9DC14ABDD1F87C6A8B1AE53A41CC7C1E79482693D2D0D0A0380ED787B2771F36AC4CE6CE4D03D341A7E6BB7B576236F39047839B9FB9CE2E59528FF52E8235B9D6DE4757D97BFA4A7DBF386244A9D6FB75EB363A7B183E8B785B5B5B9D7596BE99DFA83D6AB1A5A54542A110E2D2A473668E9933E3F0F980F609CC6F3776A31BC33B79E0F399178D8DEDE8F113D01AF7390117E60AFB5D4499FD4EA5D47E2F518CB8AC91279EA8417FD0ACB889D1E8C6AC6FF489CF673C78CDBA75EB3057A3D4D6D64A3018EC710D605DCDE4DCE8DDAD17536B384F7BFB76F40009602AB3F1BA3197D8EF828AEC775AD67F0463C694C8EBAFC78171B3F24A6CEC0D0C5ED66762E66F7C474FCEF93F2C35C4797F6D907FC3B7C94F6A853A612CC991E9C59887FCDCD1B103EB65127130EFDFCCFF0116E67EFDF264D2A44AC9CBB33018FF7924DE542AA5B9CA3D05F1122B31F31C7DF9BD83185927184FE236EF7079AEA73CDCB2A503FBCAA44C9CC8FD7B2E6AF01AB9FF7EBF84C32D7ABFD185E198DC93671AFFCFA1C669C47DB85EE7F70C6A88FC1BBCAC0B26074D4C888D3A301AF0F9D2C0D1A4D83235419EA967724CDCE49F7586DC1FE9419E2DEDB777E392C6CF34FE66FE6732FF95111F8FE496781389047AA8B89E67ADF9A307E3402E69D48131C3B35BCBE49AD8C3E1B0D60F530B8F9641CDB8F5408EC9ABE138168BE9FFADFCCCB81CAD83B940ACE4991C9B7A4DDFFE6C83FC330F8EE4F8379200289C]
Point(doPosition)
}
Add(DoData,14977216,245,231)
{
link(onEventData,10055146:doRead,[])
link(Data,14697615:Var2,[])
}
Add(BitmapStream,10055146,329,231)
{
link(onRead,15396995:doLoad,[])
}
Add(GetDataEx,14697615,245,210)
{
link(Data,3101145:Stream,[])
}
Add(Message,12213948,504,301)
{
Message="Соединение с сервером отключено"
}
Add(TCP_Server,20680,217,378)
{
Port=120
DataType=3
Point(onServerConnect)
link(onRead,16723214:doValue,[])
link(onConnect,14168236:doMessage,[(275,391)(275,440)])
link(onDisconnect,13044645:doMessage,[(269,398)(269,482)])
link(onServerConnect,4814486:doMessage,[(262,405)(262,524)])
}
Add(ZLIB,1093325,336,371)
{
link(onStream,13102009:doRead,[])
link(Stream,16723214:Value,[(342,361)(325,361)(325,422)(293,422)])
}
Add(Image,10840921,434,371)
{
Left=315
Top=25
Width=255
Height=195
}
Add(Message,4814486,287,518)
{
Message="Сервер подключен."
}
Add(Memory,16723214,287,378)
{
link(onData,1093325:doDeCompress,[])
}
Add(BitmapStream,13102009,385,371)
{
link(onRead,10840921:doLoad,[])
}
Add(Message,13044645,287,476)
{
Message="Соединение с клиентом отключено"
}
Add(Message,14168236,287,434)
{
Message="Соединение с клиентом подключено."
}
Add(Hub,14723045,168,273)
{
OutCount=5
link(onEvent1,14977216:doData,[(220,279)(220,237)])
link(onEvent2,20680:doOpen,[(206,286)(206,384)])
link(onEvent3,5288767:doOpen,[])
link(onEvent4,43492:doCompress,[(242,300)(242,307)])
link(onEvent5,6118941:doTimer,[(273,307)(273,328)])
}
Add(Label,3538488,294,168)
{
Left=5
Top=5
Width=75
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="Клиент"
}
Add(Label,11635103,291,165)
{
Left=310
Width=78
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="Сервер"
}
Add(Timer,6118941,364,322)
{
AutoStop=1
link(onTimer,5288767:doClose,[(426,328)(426,300)])
}


карма: 0

0
файлы: 1code_32382.txt [8.5KB] [75]
Разработчик
Ответов: 26163
Рейтинг: 2127
#5: 2013-11-21 12:15:42 ЛС | профиль | цитата
Kazbek17 писал(а):
все работает

Kazbek17, таймер не решение вопроса. Где уверенность, что за одну секунду данные гарантировано будут доставлены серверу? По-нормальному, сервер должен давать клиенту ответ о получении всех данных, по получению которого, клиент может спокойно отключиться или передавать следующие данные, либо сам сервер должен отсоединять клиента по получению всех данных
карма: 22

0
Ответов: 4631
Рейтинг: 749
#6: 2013-11-21 12:48:08 ЛС | профиль | цитата
Можно посылать данные в определенном формате, например, сначала 4 байта - длина данных, потом сами данные. При получении указанного количества считать передачу завершенной.
Ещё было бы очень полезным событие onSend в компонентах TCP_Server и TCP_Client, которое просигнализирует о завершении передачи данных методом doSend.
карма: 26

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#7: 2013-11-21 13:07:54 ЛС | профиль | цитата
Netspirit, все это требует подтверждающего ответа от сервера.
карма: 22

0
Ответов: 4631
Рейтинг: 749
#8: 2013-11-21 13:17:17 ЛС | профиль | цитата
Да не, хотя бы в смысле "с нашей стороны пули вылетели", то-есть: "Я закончил передачу данных. Не могу гарантировать, что они были получены на том конце.".
карма: 26

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#9: 2013-11-21 13:27:26 ЛС | профиль | цитата
Netspirit писал(а):
"Я закончил передачу данных. Не могу гарантировать, что они были получены на том конце."

Да у ТС оно и сечас так работает -- данные отправлены, а там хоть трава не расти, вот ему и нужно иметь гарантированное подтверждение получения с закрытием коннекта на своей стороне. А то он его закрывает, а тк передача данных работает асинхронно, то синхронное закрытие приводит к отсечке передачи.
карма: 22

0
Ответов: 4631
Рейтинг: 749
#10: 2013-11-21 13:43:05 ЛС | профиль | цитата
Именно, он даже не может узнать когда он сам закончит свою передачу. Причем здесь подтверждение получения от другой стороны?
карма: 26

0
Ответов: 704
Рейтинг: 44
#11: 2013-11-21 13:56:22 ЛС | профиль | цитата
nesco писал(а):
Kazbek17, таймер не решение вопроса
nesco тогда вот таким путем.

Add(ZLIB,43492,378,266)
{
link(onStream,13189785:doEvent1,[])
link(Stream,14697615:Var3,[(384,180)])
}
Add(TCP_Client,5288767,532,252)
{
Port=120
IP="127.0.0.1"
DataType=3
Point(onProgress)
link(onConnect,6407912:doMessage,[])
link(onDisconnect,14168236:doMessage,[(583,272)(583,307)])
}
Add(Image,15396995,455,196)
{
Left=10
Top=30
Width=260
Height=190
}
Add(MemoryStream,3101145,322,133)
{
@Hint=#8:Картинка|
Stream=[ZIP3624000078DAD559698C545516A6AB41940651407163547043036A508C4BA2281A4C1CA2B8C5187F100C8A3B0663C405D408A292D191651C228C34D2F4BE776D5D7B55576F344DD380348B20DD2088E2BE2767BEEFBC771FAFCBA6759CC1C19B9CBCAA57EFBDFB9DEF7CE7DC735F5DFFD7F1E7F4D1311E7601EC12DBB2FA9CD5C78CE4F196992147703CF860AED4D7D7CB9F719C74D262193EFC69A9A9A9916FBFFDF64F837BEA549FF4E9B3486DC890D9E2F57A15FFF7DF7F2F3FFDF4D3518D7DE4C855C0FD0EEC1FB0A53270E01CC5FFDD77DFC90F3FFC203FFEF8E351E9C333CF344876F60A60A6BD0B5B06FBA7E4E4BCE4E0277683FF68F261C68C22605D09CBB58FFF72FC1830609EEABF27FC5F7CF185CC9DBBFEFF867BE7CE9D128D46E5AEBB88F97DD86AFB483FDE533F060C58E0E4AF5B3F3FFFFCB37CFEF9E7326244A58C1DDBFA8763DFB46993AC5FBF5ED2E9B4DC7E7B1EB0E6DBB6C6F66395C6222767A1F8FD7EF9E69B6FBAE1A77DF5D557327A7435AEAB839F7F5C8DDDB061836CDCB8517D58BB76AD4C9E5C080CC5301E0BD487ACAC3CB9F0C20A1933E6EF5250502A1F7DF4911303839F9A1A3FBE46F15B96922953361F31DC5BB76E55CC1D1D1DFA99D6D6D626B7DC5282B9CB6025EAC7D0A15572D55525382E414E3F27AB5717C9DEBD7B65CB962DAA191303FA72FDF55EDC93EEE6C3196734FECFB15F76D94AE57CFBF6EDF2E1871FAAF669F467D22462AF00E75572C1057E58AE783C2B34073C9E39B27C79A17CF9E597F2F5D75FEBBDBB77EF76E270DB6DFE5FE0477720D3A6C575BDF86FC7638F350057819C77DE0AD9B16387EA80F3D33A3B3B3516132756C8A0414168B914F57EA59D03561E7B3C2FCBD2A5F95A6B9803C4F4D9679F69EC786EDAB410AE49FFC287C993A39A1FBCE7F70EEAD7D274A95C7EF91AC5BB67CF1ED5028F34C663CA943239E59402F8596CE70173204F7DF078E6C9E2C56B5437E4DFACC3B45DBB76C9C30FFBE07BBD0BBB85FFEAAB23EA1F7DE0F13F19F3E6AD95638EE1FCACEBE5B02AB9F1C632D9B76F9F7CF2C9278EEDDEDD29AFBCE29561C3DED76BAC6B4BECFBF2B50E793C0B803F4FF11B0DB9D7E2F9F39372F6D9D5A83FF16EFA193D3AA271E2F5C47FF0E0C1DFEC87C55D916ABA4F1FD637AFDC7DB74F9F672C126947ED2897BE7D57C1D7D5F67595AE3C2ED4E7783C0B817FB5E2377C5213C687B7DE22F77139ED34BFFCE52F41C430A9F84F3E39AC7CF15AFACDFB3FFDF4D3DF88DFF0CEDAC6FCAA95071E08E9FC9D9D7B64D6ACA81C771CF1FA803F0FF8F3D5472B0615AA374B47F9F8FD2D79FBED5CBD97462C6E1F56AC6856FCE43D27278A7AEB97C18363D2BF7F18B9D6A9D7190D3106BF251FBA630FC122F2D45351A9AC5C2F175D64F9635900F8F281BF507D3914034B47595945D0C51279F3CD551A33A301A32362292A6A458D8D28E7463BE79F1F944B2E09486BEB7607BF89013FF7365E7A69B38DE31076723D664C11B0F27B54CF59BFD5E25C21F017AB2FEE180C19520D3D942237FE26AFBD962B9B376FD69CC9F4C1EFDF081FC3B82761FB90D4CF279C1041DFB75635C3EB0C7E1E7B1B0F3DB4C1E692D802A887C53896638E423BCE71DB87B0FAD0AF5F11F097DAF87DF8EC938B2F8EC8A8517972ECB1EF42FFF3C1C972ADB7EDEDED5AFFDD3ED4D56D818FB5367EB7C5A1AD755AAF59A78CFEE8436F63CA9416C4DD0FBCA598BF4CB9CECAAA450C4ABB3DDB8A4118E74BE04399FA3B706008B8CBED35A008F71502FF6BF2E28BEFCAFEFDFB954B62E13AF8F1C71F2B9EB6B61D72D659411737876CC18226D5CF81030774BD603EFF1AFE6BAF8D208FF2312FB510D3E7783C41F852E98A6FDCD1D1D0A1E5E0BC528E3FBE1A31E77D65AA7F8FA71439C8D8BD2173E62C53FCC4C13CA01FC463F5213B81DFDB03FE98CC9C99EA96BF8C1DD7D0DEC6E8D1D44ED0C66769323B3B082C5E27BFACF331AC3B71E4450DE2BF1A31A8B0F55F8DEB2B109772D491521CDF04FE77143BF54FEC2697F9BDB5B50DF8CB704FCCE62BE6E0BFF7DEA86ADFE42F7D600C7A1B8307876C6DC49D9AC03CE8D72FD00DFFD0A131F4CD0159B9D28F7D7A8DA3FFECEC1A68AF4A4E3CB1126B72058E8BE485172CFC8C41A60F3C376A54019E5782B8D7BA7C88C94D37859C3C31F87F4D3FD4BA75BFA9672970EFB36B4F0ABF27309F57962D6BD4B99B9B9BA11BAFE2CFCE66DE78517B6AE4F4D3ABE59C73AAD14BBE23B3672F55BD1BFCF4C5F8C0CF63C75668BC070DAAC47DD4A2C5FFB871B57A9DC16EF0F7F62EC3E23E6163B7FA918103BD5AA3070DF2CBD34FA7A4AB6BBF3E8BCF267EFEEEF130C7FDC0EE0366BFF6A1E3C605A0C7E5F2E4934BB477227EB70F2617AEBBAED2E1DCE309612D2EC7FDB55807424E9EBBF1535387C71F75716FE13FF5D46AB9F5D600F62D5DBA66528F663D6F6C6C52CEFBF7AF451C82E02FA8735F714518F18FA2EFCE05FEC59A77C442FD66C6E1CE3BBD19FA8FA15EF8706F397AF45D3A97DB7A5BC3DCDAF178E2886539FAD042A75F61EC184F6A97F3A7D38DD0AD17B10941EF21F4D961608FCACD3727D01BD7CBA597BE87982DD37AC37ED58DDFF8307D7A00B18B21C7C87F0C1AB57CE8DB37087E5AE5830F3E503F0DFEDEFA382B6F13F0BF0ABC96E15971E8C0ABD8D9F39A7E90B1E7FCC964137CF4A10685D04786712DF7F3F5E0BC41264C28C6DA9B46BDDFAA359FF5AFABABEB173178F4D1006217C37CE43D867A1CD778783C11F0D3A1D7719FC4FD12793B5C0ECF9EBD0DF75683CF22DC1F72FAD91B6E08287ED30BF219E48318128966D4181F7413461EC6B0EF4802BF5F5E7E3985B56A9FD3AFF1B86DDB36F5836BB1DB8759B382F03F0A1FE2A87F71ADCBECA7FBF78F4945C5069D8F66D670EE3F7A1A8F3C520FFC55DD6A0FED8E3BC2AA9B4CEE8921166BC6DC3EE45C106B41B93CFB6C0238F73A3C65EA96F7B217229FCC07F2FFDC7321ED97870F4FE098403D4EA00E24E04B027BCF16073FCDECDD7A1A1326B4B8EAFE219B3E3DD66D1F61B8E7FC81403DF2BB481E7F3C025C5DDDF608C6DCF31BBFC821F7FE5C83E7CD8B00732DFABDA49C79661247EEE153786E4ADE78A3B1C767F4BCF6D6BBD63FABD7F17812E034D56D0F61B033AFE2F13434B4C9A985C6C86BA6659EE773F82E66D1A220F82E85B166A6502FEA80252DE79E9B96E79F4FF7889FF52473507F87F05B96939394575FAD53EC7C0EE764FCF8EE8AF584E799933CC7FC72EF2F8D99BA6F8CBE3317F83EE5501FB75DA64EAD411C2AE4CA2BEBE59A6B9AB1E76E421D48F688BFA77D8CE9F7AD35C0B2E1C353BAC72377C4C798B3A735796038E591FE500FDCD39B5ACF238D7AA19FC46C70F31E5E638CBE45A36D586BCAB1DF8EC98C199BD0C3D539FB06B7F5B40658F8C32E8B20A651EC5F131A67D63FF26DF2C86077F3CC2371525B34D60CFACB9CA56FF48358CD3B0C5E4BE3FA6CDECB709EC2C214D6BF52B9E71EBF136733F7E1F6F256DF19722C3B3B80FD6295141737E8F34DFE666227EE4CAE392735525DDD20F3E747113BEBDD0B9FE3C66AF62734C6D7F4C8F4B5A9A9590A0A22D8E3D4E9EFEE5AD6530E5B3D24DF01B09E57C8C2854DC077506B0FF151E37CB659770C7637662B1776C0E7B572DF7D49E82F821AE09391232B51679288C336E7DD9DC14ABDD1F87C6A8B1AE53A41CC7C1E79482693D2D0D0A0380ED787B2771F36AC4CE6CE4D03D341A7E6BB7B576236F39047839B9FB9CE2E59528FF52E8235B9D6DE4757D97BFA4A7DBF386244A9D6FB75EB363A7B183E8B785B5B5B9D7596BE99DFA83D6AB1A5A54542A110E2D2A473668E9933E3F0F980F609CC6F3776A31BC33B79E0F399178D8DEDE8F113D01AF7390117E60AFB5D4499FD4EA5D47E2F518CB8AC91279EA8417FD0ACB889D1E8C6AC6FF489CF673C78CDBA75EB3057A3D4D6D64A3018EC710D605DCDE4DCE8DDAD17536B384F7BFB76F40009602AB3F1BA3197D8EF828AEC775AD67F0463C694C8EBAFC78171B3F24A6CEC0D0C5ED66762E66F7C474FCEF93F2C35C4797F6D907FC3B7C94F6A853A612CC991E9C59887FCDCD1B103EB65127130EFDFCCFF0116E67EFDF264D2A44AC9CBB33018FF7924DE542AA5B9CA3D05F1122B31F31C7DF9BD83185927184FE236EF7079AEA73CDCB2A503FBCAA44C9CC8FD7B2E6AF01AB9FF7EBF84C32D7ABFD185E198DC93671AFFCFA1C669C47DB85EE7F70C6A88FC1BBCAC0B26074D4C888D3A301AF0F9D2C0D1A4D83235419EA967724CDCE49F7586DC1FE9419E2DEDB777E392C6CF34FE66FE6732FF95111F8FE496781389047AA8B89E67ADF9A307E3402E69D48131C3B35BCBE49AD8C3E1B0D60F530B8F9641CDB8F5408EC9ABE138168BE9FFADFCCCB81CAD83B940ACE4991C9B7A4DDFFE6C83FC330F8EE4F8379200289C]
Point(doPosition)
}
Add(DoData,14977216,322,196)
{
link(onEventData,10055146:doRead,[])
link(Data,14697615:Var2,[])
}
Add(BitmapStream,10055146,406,196)
{
link(onRead,15396995:doLoad,[])
}
Add(GetDataEx,14697615,322,175)
{
link(Data,3101145:Stream,[])
}
Add(TCP_Server,20680,294,343)
{
Port=120
DataType=3
Point(onServerConnect)
link(onRead,16723214:doValue,[])
}
Add(ZLIB,1093325,413,336)
{
link(onStream,13102009:doRead,[])
link(Stream,16723214:Value,[(419,326)(402,326)(402,387)(370,387)])
}
Add(Image,10840921,511,336)
{
Left=315
Top=25
Width=255
Height=195
}
Add(Memory,16723214,364,343)
{
link(onData,1093325:doDeCompress,[])
}
Add(BitmapStream,13102009,462,336)
{
link(onRead,10840921:doLoad,[])
}
Add(Hub,14723045,245,238)
{
OutCount=4
link(onEvent1,14977216:doData,[(297,244)(297,202)])
link(onEvent2,20680:doOpen,[(283,251)(283,349)])
link(onEvent3,5288767:doOpen,[])
link(onEvent4,43492:doCompress,[(319,265)(319,272)])
}
Add(Label,3538488,371,133)
{
Left=5
Top=5
Width=75
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="Клиент"
}
Add(Label,11635103,368,130)
{
Left=310
Width=78
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="Сервер"
}
Add(Hub,13189785,427,266)
{
link(onEvent1,5288767:doSend,[])
link(onEvent2,5288767:doClose,[(487,279)(487,265)])
}
Add(MainForm,2953706,189,231)
{
Width=597
Height=314
link(onCreate,14723045:doEvent1,[(233,251)(233,244)])
}
Add(Message,6407912,602,259)
{
Message="Connect."
}
Add(Message,14168236,602,301)
{
Message="disconnect."
}

Нужно в этих компонентах, делать параметр отчет о доставки данных, тогда проблем не будет. Я посмотрел onProgress но как он работает я так и не понял.
карма: 0

0
файлы: 1code_32384.txt [8.1KB] [82]
Разработчик
Ответов: 26163
Рейтинг: 2127
#12: 2013-11-21 13:58:12 ЛС | профиль | цитата
Netspirit писал(а):
Именно, он даже не может узнать когда он сам закончит свою передачу. Причем здесь подтверждение получения от другой стороны

Привет. Ты заполняешь буфер передачи, команда Send заканчивается на этом, дальше работает система, как ты у нее узнаешь, что все данные переданы и доставлены серверу? Если не отключать клиента, то нам будет пофиг, когда данные доплетутся до сервера, мы можем спокойно заполнять буфер дальше, а вот для отключения мы точно должны знать, что все данные доставлены
карма: 22

0
Ответов: 704
Рейтинг: 44
#13: 2013-11-21 14:04:37 ЛС | профиль | цитата
nesco писал(а):
Привет. Ты заполняешь буфер передачи, команда Send заканчивается на этом, дальше работает система, как ты у нее узнаешь, что все данные переданы и доставлены серверу? Если не отключать клиента, то нам будет пофиг, когда данные доплетутся до сервера, мы можем спокойно заполнять буфер дальше, а вот для отключения мы точно должны знать, что все данные доставлены

Согласен. Но тогда нужно схему собирать таким путем, чтобы сервер отсылал отчет о доставке и после этого уже отключался клиент.
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#14: 2013-11-21 14:08:57 ЛС | профиль | цитата
Kazbek17 писал(а):
Я посмотрел onProgress но как он работает я так и не понял

Он работает на прием, а нам нужно на передачу
------------ Дoбавленo в 14.08:
Kazbek17 писал(а):
Но тогда нужно схему собирать таким путем, чтобы сервер отсылал отчет о доставке и после этого уже отключался клиент.

Млин, а я про что говорю?
nesco писал(а):
сервер должен давать клиенту ответ о получении всех данных, по получению которого, клиент может спокойно отключиться

карма: 22

0
Ответов: 4631
Рейтинг: 749
#15: 2013-11-21 14:24:03 ЛС | профиль | цитата
Нужно искать в API, должны быть соответствующие сигналы. Ставить паралельный поток на ожидание сигнала. Либо добавить синхронный режим передачи. Но опять же это требует достаточно большой доработки компонентов.
карма: 26

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