|
1 | | -// Скрипт читает файлы справки в C:\444\OSClientServerRu\ и создает *.cs файлы в каталоге C:\444\ВыгруженныеОбъекты\ |
2 | | -// Из каталога C:\444\ВыгруженныеОбъекты\ файлы *.cs можно скопировать в каталог проекта. |
| 1 | +// Скрипт читает файлы справки в C:\444\OSClientServerRu\ и создает *.cs файлы в каталоге C:\444\ВыгрузкаКлиентСервера\ |
| 2 | +// Из каталога C:\444\ВыгрузкаКлиентСервера\ файлы *.cs можно скопировать в каталог проекта. |
3 | 3 |
|
4 | 4 | Перем СтрДирективы, СтрШапка, СтрРазделОбъявленияПеременных, СтрКонструктор, СтрBase_obj, СтрСвойства, СтрМетоды, СтрПодвал, СтрВыгрузкиПеречислений; |
5 | 5 | Перем СтрРазделОбъявленияПеременныхДляПеречисления, СтрСвойстваДляПеречисления, СтрМетодовСистема, СписокСтрМетодовСистема; |
|
333 | 333 | | |
334 | 334 | |"; |
335 | 335 | Возврат Стр; |
336 | | - ИначеЕсли ИмяКонтекстКлассаАнгл = "CommunicationStates" Тогда |
| 336 | + ИначеЕсли ИмяКонтекстКлассаАнгл = "CommunicationStates" или |
| 337 | + ИмяКонтекстКлассаАнгл = "ClientMode" Тогда |
337 | 338 | Стр = |
338 | 339 | "using ScriptEngine.Machine.Contexts; |
339 | 340 | | |
|
444 | 445 | Если ИмяКласса = "OneScriptClientServer" Тогда |
445 | 446 | Стр = |
446 | 447 | " public static IValue Event = null; |
| 448 | + | public static int thirdPartyClientMode; |
447 | 449 | | public static IValue EventAction = null; |
448 | 450 | | public static IValue ServerMessageReceived; |
449 | 451 | | public static IValue ServerMessageSent; |
|
471 | 473 | " [ScriptConstructor] |
472 | 474 | | public static IRuntimeContextInstance Constructor() |
473 | 475 | | { |
| 476 | + | thirdPartyClientMode = cs_ClientMode.None; |
474 | 477 | | return new OneScriptClientServer(); |
475 | 478 | | }//end_constr |
476 | 479 | |"; |
|
1047 | 1050 | | } |
1048 | 1051 | | |
1049 | 1052 | |"; |
| 1053 | + ИначеЕсли (СвойствоРус = "РежимСтороннегоКлиента") и (ИмяКонтекстКлассаАнгл = "OneScriptClientServer") Тогда |
| 1054 | + Стр = Стр + |
| 1055 | + " [ContextProperty(""РежимСтороннегоКлиента"", ""ThirdPartyClientMode"")] |
| 1056 | + | public int ThirdPartyClientMode |
| 1057 | + | { |
| 1058 | + | get { return thirdPartyClientMode; } |
| 1059 | + | set { thirdPartyClientMode = value; } |
| 1060 | + | } |
| 1061 | + | |
| 1062 | + |"; |
1050 | 1063 | ИначеЕсли (СвойствоРус = "Сценарий") и (ИмяКонтекстКлассаАнгл = "Action") Тогда |
1051 | 1064 | Стр = Стр + |
1052 | 1065 | " [ContextProperty(""Сценарий"", ""Script"")] |
|
1097 | 1110 | | } |
1098 | 1111 | | |
1099 | 1112 | |"; |
1100 | | - ИначеЕсли (СвойствоРус = "РежимСтороннегоКлиента") и (ИмяКонтекстКлассаАнгл = "OneScriptClientServer") Тогда |
1101 | | - СтрРазделОбъявленияПеременных = СтрРазделОбъявленияПеременных + Символы.ПС + |
1102 | | - " public static bool thirdPartyClientMode = false;"; |
1103 | | - Стр = Стр + |
1104 | | - " [ContextProperty(""РежимСтороннегоКлиента"", ""ThirdPartyClientMode"")] |
1105 | | - | public bool ThirdPartyClientMode |
1106 | | - | { |
1107 | | - | get { return thirdPartyClientMode; } |
1108 | | - | set { thirdPartyClientMode = value; } |
1109 | | - | } |
1110 | | - | |
1111 | | - |"; |
1112 | 1113 | ИначеЕсли (СвойствоРус = "Отправитель") и (ИмяКонтекстКлассаАнгл = "EventArgs") Тогда |
1113 | 1114 | Стр = Стр + |
1114 | 1115 | " [ContextProperty(""Отправитель"", ""Sender"")] |
|
1658 | 1659 | Знач3 = СписокПереч2.Получить(А).Значение; |
1659 | 1660 | Предст3 = СписокПереч2.Получить(А).Представление; |
1660 | 1661 | // Сообщить("Знач3 - " + Знач3 + " Предст3 - " + Предст3); |
1661 | | - СтрРазделОбъявленияПеременных = СтрРазделОбъявленияПеременных + Символы.ПС + |
1662 | | - " private static Cs" + Знач3 + " cs_" + Знач3 + " = new Cs" + Знач3 + "();"; |
1663 | 1662 |
|
1664 | | - Стр = Стр + Символы.ПС + |
1665 | | - " [ContextProperty(""" + Предст3 + """, """ + Знач3 + """)] |
1666 | | - | public Cs" + Знач3 + " " + Знач3 + " |
1667 | | - | { |
1668 | | - | get { return cs_" + Знач3 + "; } |
1669 | | - | }" + Символы.ПС; |
| 1663 | + // Если Предст3 = "РежимСтороннегоКлиента" Тогда |
| 1664 | + // СтрРазделОбъявленияПеременных = СтрРазделОбъявленияПеременных + Символы.ПС + |
| 1665 | + // " public static int cs_ThirdPartyClientMode = 0;"; |
| 1666 | + // Иначе |
| 1667 | + СтрРазделОбъявленияПеременных = СтрРазделОбъявленияПеременных + Символы.ПС + |
| 1668 | + " private static Cs" + Знач3 + " cs_" + Знач3 + " = new Cs" + Знач3 + "();"; |
| 1669 | + Стр = Стр + Символы.ПС + |
| 1670 | + " [ContextProperty(""" + Предст3 + """, """ + Знач3 + """)] |
| 1671 | + | public Cs" + Знач3 + " " + Знач3 + " |
| 1672 | + | { |
| 1673 | + | get { return cs_" + Знач3 + "; } |
| 1674 | + | }" + Символы.ПС; |
| 1675 | + // КонецЕсли; |
1670 | 1676 | КонецЦикла; |
1671 | 1677 | Стр = Стр + Символы.ПС; |
1672 | 1678 | Возврат Стр; |
|
2774 | 2780 | Иначе |
2775 | 2781 | ИмяКонтекстКлассаАнгл1 = ИмяКонтекстКлассаАнгл; |
2776 | 2782 | КонецЕсли; |
2777 | | - Если ИмяКонтекстКлассаАнгл = "Sounds" или // это перечисление собственное (не от микрософт) |
2778 | | - ИмяКонтекстКлассаАнгл = "DataType" Тогда |
| 2783 | + Если ИмяКонтекстКлассаАнгл = "ClientMode" Тогда // это перечисление собственное (не от микрософт) |
2779 | 2784 | СтрРазделОбъявленияПеременныхДляПеречисления = СтрРазделОбъявленияПеременныхДляПеречисления + Символы.ПС + |
2780 | 2785 | " private int m_" + СоставнаяСтр + " = " + ЗначениеЧлена + "; // " + ЗначениеЧлена + " " + ОписаниеЧлена; |
2781 | 2786 |
|
|
3522 | 3527 | | catch |
3523 | 3528 | | { |
3524 | 3529 | | Disconnect(); |
3525 | | - | System.Windows.Forms.MessageBox.Show(""Не удается войти на сервер. Пожалуйста, попробуйте еще раз позже.""); |
| 3530 | + | Console.Write(""Не удается войти на сервер. Пожалуйста, попробуйте еще раз позже.""); |
3526 | 3531 | | } |
3527 | 3532 | | |
3528 | 3533 | | if (dll_obj.Connected != null) |
|
5282 | 5287 | | var totalSent = 0; |
5283 | 5288 | | lock (_syncLock) |
5284 | 5289 | | { |
5285 | | - | if (oscs.OneScriptClientServer.thirdPartyClientMode) |
| 5290 | + | if (oscs.OneScriptClientServer.thirdPartyClientMode != 0) |
5286 | 5291 | | { |
5287 | 5292 | | byte[] sendBytes = new byte[0]; |
5288 | 5293 | | if (message.GetType() == typeof(ScsRawDataMessage)) |
|
5351 | 5356 | | return; |
5352 | 5357 | | } |
5353 | 5358 | | |
5354 | | - | if (oscs.OneScriptClientServer.thirdPartyClientMode) |
| 5359 | + | if (oscs.OneScriptClientServer.thirdPartyClientMode == 2) // Браузер |
5355 | 5360 | | { |
5356 | 5361 | | try |
5357 | 5362 | | { |
|
5398 | 5403 | | { |
5399 | 5404 | | throw new CommunicationException(""Tcp socket is closed""); |
5400 | 5405 | | } |
| 5406 | + | } |
| 5407 | + | catch |
| 5408 | + | { |
| 5409 | + | Disconnect(); |
| 5410 | + | } |
| 5411 | + | } |
| 5412 | + | else if (oscs.OneScriptClientServer.thirdPartyClientMode == 1) // Нативный |
| 5413 | + | { |
| 5414 | + | try |
| 5415 | + | { |
| 5416 | + | System.Threading.Thread.Sleep(5); // без этого данные от разных отправок сторонних клиентов могут оказаться соединенными. |
| 5417 | + | //Получить количество полученных байтов |
| 5418 | + | var bytesRead = _clientSocket.EndReceive(ar); |
| 5419 | + | |
| 5420 | + | if (_clientSocket.Available == 0) |
| 5421 | + | { |
| 5422 | + | out1 = true; |
| 5423 | + | } |
| 5424 | + | |
| 5425 | + | if (bytesRead > 0) |
| 5426 | + | { |
| 5427 | + | LastReceivedMessageTime = DateTime.Now; |
| 5428 | + | |
| 5429 | + | // Скопируйте полученные байты в новый массив байтов |
| 5430 | + | var receivedBytes = new byte[bytesRead]; |
| 5431 | + | Array.Copy(_buffer, 0, receivedBytes, 0, bytesRead); |
| 5432 | + | |
| 5433 | + | rv = Combine(rv, receivedBytes); // Накопим данные из потока для одного клиента, если их больше 4096 байт. |
| 5434 | + | |
| 5435 | + | if (out1) |
| 5436 | + | { |
| 5437 | + | string magicSign = Convert.ToString(rv[0], 16).ToUpper() + "" "" + |
| 5438 | + | Convert.ToString(rv[1], 16).ToUpper() + "" "" + |
| 5439 | + | Convert.ToString(rv[2], 16).ToUpper() + "" "" + |
| 5440 | + | Convert.ToString(rv[3], 16).ToUpper(); |
| 5441 | + | |
| 5442 | + | if (magicSignature.Contains("","" + magicSign + "","")) |
| 5443 | + | { |
| 5444 | + | OnMessageReceived(new ScsRawDataMessage(rv)); |
| 5445 | + | } |
| 5446 | + | else |
| 5447 | + | { |
| 5448 | + | OnMessageReceived(new ScsTextMessage(Encoding.UTF8.GetString(rv))); |
| 5449 | + | } |
| 5450 | + | |
| 5451 | + | rv = new byte[0]; |
| 5452 | + | out1 = false; |
| 5453 | + | } |
| 5454 | + | } |
| 5455 | + | else |
| 5456 | + | { |
| 5457 | + | throw new CommunicationException(""Tcp socket is closed""); |
| 5458 | + | } |
5401 | 5459 | | |
5402 | 5460 | | // Прочитайте больше байтов, если все еще работаете |
5403 | 5461 | | if (_running) |
|
8703 | 8761 | КонецФункции//СортировкаКласса2Уровня(СтрКласса) |
8704 | 8762 |
|
8705 | 8763 | КаталогСправки = "C:\444\OSClientServerRu";// без слэша в конце |
8706 | | -КаталогВыгрузки = "C:\444\ВыгруженныеОбъекты";// без слэша в конце |
| 8764 | +КаталогВыгрузки = "C:\444\ВыгрузкаКлиентСервера";// без слэша в конце |
8707 | 8765 | // КаталогВыгрузки = "\\UBUNTU SHARE\allaccess";// без слэша в конце |
8708 | 8766 |
|
8709 | 8767 | ВыгрузкаДляCS(); |
|
0 commit comments