Здравствуйте, SergeyT., Вы писали:
ST>Здравствуйте, Artjom, Вы писали:
A>>Возникает исключение на строчке mysocket = new Socket
A>>Текст исключения:
A>>A>>((System.Configuration.ConfigurationErrorsException)(ex))
A>>InnerException = {"Unrecognized configuration section system.serviceModel. (C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\Config\\machine.config line 145)"}
A>>
A>>
ST>Так там же красным по английскому напиасано, в чем проблема
У вас чего-то не то в вашем конфиге.
Где проблема понятно. Непонятно как исправить
Вот содержимое файла со строки 145:
<system.serviceModel>
<client>
<metadata>
<policyImporters>
<extension type="System.serviceModel.Channels.ContextBindingElementImporter, system.workflowservices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"/>
<extension type="System.serviceModel.Channels.ContextBindingElementImporter, system.workflowservices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"/>
</policyImporters>
<wsdlImporters>
<extension type="System.serviceModel.Channels.ContextBindingElementImporter, system.workflowservices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"/>
<extension type="System.serviceModel.Channels.ContextBindingElementImporter, system.workflowservices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"/>
</wsdlImporters>
</metadata>
</client>
<extensions>
<behaviorExtensions>
<add name="persistenceProvider" type="System.serviceModel.Configuration.PersistenceProviderElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="workflowRuntime" type="System.serviceModel.Configuration.WorkflowRuntimeElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="enableWebScript" type="System.serviceModel.Configuration.WebScriptEnablingElement, System.serviceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttp" type="System.serviceModel.Configuration.WebHttpElement, System.serviceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</behaviorExtensions>
<bindingElementExtensions>
<add name="webMessageEncoding" type="System.serviceModel.Configuration.WebMessageEncodingElement, System.serviceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="context" type="System.serviceModel.Configuration.ContextBindingElementExtensionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
<bindingExtensions>
<add name="wsHttpContextBinding" type="System.serviceModel.Configuration.WSHttpContextBindingCollectionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="netTcpContextBinding" type="System.serviceModel.Configuration.NetTcpContextBindingCollectionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="webHttpBinding" type="System.serviceModel.Configuration.WebHttpBindingCollectionElement, System.serviceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="basicHttpContextBinding" type="System.serviceModel.Configuration.BasicHttpContextBindingCollectionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingExtensions>
</extensions>
</system.serviceModel>
ST>Скопируйте свой же код в пустое консольное приложение и запустите и будет все ок (я, например, так и сделал и никаких ошибок не возникло).
Код рабочий и программа работала до тех пор пока не была установлена .NET версии 4.0.
ST>К коду есть МНОГО вопросов (если это не лаба, для лабы код походит, для других целей — нет).
ST>1. Наименование ужасно. В .NET-е существуют устойчивые правила именования классов, полей, параметров и т.д.
ST> Классы: PamelCase — в вашем случае: UdpServer (никаких префиксов, исключения — только имена интерфейсов, которые начинаются с I, например, IDisposable).
ST> Поля: camelCase — в вашем случае поля должны быть: fifoNext, fifoSize и т.д., возможно использование лидирующего подчеркивания (т.е. _fifoNext)
ST> Параметры: так же как и поля. Формат типа server_port — не принят.
Delphi даёт о себе знать. Не так просто переменить ставший привычным стиль написния/именования и проч.
ST>2. Обработка исключений
ST> В вашем коде блоки catch вообще пустые (как правильно уже заметили), что усложняет вашу отладку, да и каждому читателю для проверки туда хоть что-то придется вбить.
Там делать нечего, потому и пустые блоки catch: если connect проиэошёл — хорошо, нет — пытаемся до успеха.
ST>3. Дизайн. Судя по количеству кода, ваш класс TUDPServer нужно переименовать на UDPШвейцарскийНожServer, настолько много всего он делает. Такими темпами в нем понять вообще ничего нельзя будет очень и очень скоро.
Всего лишь подключается к порту и слушает его.
Вобщем не понял претензии.
Как бы Вы сделали?
ST>4. Формат заданного вопроса.
ST> Чтобы проверить работоспособность вашего кода нужно было сделать ряд дополнительных действий, таких как объявление класса, вынос полей, добавление вывода в консоль в блоках catch. Если вы хотите получить ответ, то разумнее потрать немного времени на формирование вопроса, на который удобно отвечать. Это сэкономит время отвечающему и, соответственно, увеличит вероятность ответа
Дело не в коде, а в NET и его настройках(или файлах), Что там нужно исправить и как?