[ C# / Java ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by procedure, 2 Nov 2008.

  1. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Сделал так: базовый класс абстрактный и содержит абстрактные методы



    Code:
    
            //------------------------------------------------------------------------------
            //Assigns connection handler to connection. 
            abstract public void AssignConnection(Socket _clientSock);
    
            //Client -> Server packet processor.
            abstract public void OnPacketReceived(Packet _packet, ISCPConnection _conn);
            //Server -> Client packet processor (for logging).
            abstract public void OnPacketSent(Packet _packet, ISCPConnection _conn);
            //Called from AssignConnection() [ISCPConnection.Start() method].
            abstract public void OnConnected(ISCPConnection _conn);
            //Called on socket disconnection, or when it's supposed to be disconnected
            //on error, for example.
            abstract public void OnDisconnected(ISCPConnection _conn);
            //------------------------------------------------------------------------------
    
    А наследующий класс их просто воплощает. И всего делов то :). Спасибо всем.
     
  2. maga05

    maga05 New Member

    Joined:
    6 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    согласен с вами



    думаю вы малость не правы. написать, к примеру, трой, можно на чем угодно. вопрос только в нативности файла на выходе. трой на FASM, например, не имеет специфических зависимостей (как JVM для Java или .NET Framework для C#), следовательно, процент т.н. отстука будет гораздо выше нежели у поделок на вышеперечисленных языках.

    получается чем выше уровень языка, тем сложнее ему проникнуть в ОС.

    если ошибаюсь поправьте плиз
     
  3. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Ну можно и на ассемблере набыдлокодить (хотя, трудно представить лютый быдлокод как таковой на языке такого низкого уровня :)). Я за стабильность софта.
     
  4. maga05

    maga05 New Member

    Joined:
    6 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    имхо асм не подойдет чтоб писать на нем трой типа зевса. если писать не на ООП языке, трой будет решен много чего.

    асм безусловно язык который должен знать каждый нормальный программист ну очень желательно знать. НО не получится писать на нем трой на уровне зевс и.т.д

    простой пример.
    для того что на языке асм сложить два числа необходимо вызвать как минимум четыре инструкции, например:
    mov
    mov
    add
    mov

    на асм это означало бы первой командой MOV занести число из ячейки оперативной памяти в регистр процессора, затем занести второй операнд из оперативной памяти в ячейку процессора, потом вызвать операцию сложения ADD и переместить из регистра на котором написан результат опять в память.

    если даже такая простая операция требует четырех команд (кстати, выше я описал только команды, у них ведь есть еще и операнды в которых должны быть способ обращения к памяти, название регистров и.т.д) а приставьте сколько всего надо будет для более серьезного софта.

    язык асм близок машинному коду т.е. он ближе машине чем программисту. делай это, делай то и все типа код в стиральной машине, или софт который на АТМ. в нем отсутствует специально выделенный тип буленских (Boolean) значении т.е. для TRUE or FALSE так же нет специального символьного типа, и кучи всех благ которые есть на языках как например С++, Java.


    а на языках высшего уровня как С++, Java, пример выше очень прост, например:
    а=б+в
     
  5. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Я пытаюсь сказать то, что порой использовать языки более низкого уровня просто не имеет смысла (писать что-то большое на ассемблере вообще мазахизм имхо).
     
  6. maga05

    maga05 New Member

    Joined:
    6 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    я понял, и вы правы))
     
  7. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Вопрос по c#. (.NET 4.0)

    Насколько целесообразно делать так как показано в примере на MSDN ? Дело в том что я хочу реализовать асинхронное выполнение mssql-запросов. Почитал MSDN, но меня очень насторожил вот этот цикл

    Code:
     IAsyncResult result = command.BeginExecuteNonQuery();
                    while (!result.IsCompleted)
                    {
                        Console.WriteLine("Waiting ({0})", count++);
                        // Wait for 1/10 second, so the counter
                        // does not consume all available resources 
                        // on the main thread.
                        System.Threading.Thread.Sleep(100);
                    }
    
    На сколько целесообразно делать так как там пишется ?

    Линк: http://msdn.microsoft.com/en-us/library/ca56w9se(v=vs.100).aspx
     
  8. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Насколько я знаю прямая поддержка ассинхронности появилась только в .NET 4.5 , так что приведенный пример - это костыли. Вообще считаю использование System.Threading.Thread.Sleep() не есть гуд. Хотя бы тогда отдельный поток создать нужно, что бы весь софт не вис.
     
  9. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Spot, вот и я не вижу особого смысла от такой "асинхронности" в конкретном примере с msdn :/.
     
    #1609 DeepBlue7, 28 Sep 2013
    Last edited: 28 Sep 2013
  10. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    1 person likes this.
  11. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Да, то что надо, seosimf.

    Ещё вопрос... есть какие либо книги о MSIL и вообще структуре CLR на русском ?
     
  12. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Можно почитать:
    ЯЗЫК ПРОГРАММИРОВАНИЯ
    С#2010
    И ПЛАТФОРМА .NET 4
    5-е издание
    Эндрю Троелсен

    Там в начале идет о том, что такое CLR и как трансформируется код. Ну и где то в середине еще неплохо описывается, что происходит за ширмой.
     
  13. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Ещё вопрос... Подскажите хорошие книги по программированию сетевых приложений в .NET, ну и вообще о проектировании таковых.
     
  14. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Ну как пример:

    Professional .NET Network Programming

    Автор: Эндрю Кровчик, Винод Кумар, Номан Лагари, Аджит Мунгале, Кристиан Нагел, Тим Паркер, Шриниваса Шивакумар

    Переводчик: Вл. Стрельцов

    Языки: Русский

    Издательство: Лори
     
  15. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Пишу socks5 сервер на c#, .NET 2.0

    Вопрос заключается в следующем: когда мы получаем запрос на подключение, то мы получаем сетевой порядок ip адреса куда подключаться (которые с лёгкостью конвертятся в IPAddress), а так же port (2 байта) который так же является так называемым сетевым порядком байт. Как его превратить в нормальный short ?
     
    #1615 DeepBlue7, 14 Oct 2013
    Last edited: 14 Oct 2013
  16. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Порядок байт в сетевый пакетах отличается от порядка байт в PC. В PC используется обратный порядок хранения байт: в старшем байте хранится младший разряд, в старшем - младший.

    Для перевода из сетевого в порядок PC:

    HTML:
    IPAddress.NetworkToHostOrder(...)
    Для других случаев функции можно добыть из MSDN, благо, у .NET документация просто замечательная.

    P.S. решение без проблем гуглится по запросу "c# little endian to big endian".
     
  17. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    По программированию сетевых приложений есть отличная книга: Йон Снейдер "Эффективное программирование TCP/IP". Настоятельно советую ознакомиться.
     
  18. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Вопрос по c#, конкретно - .NET 2.0. В каких случаях (кроме как в формовых приложениях) стоит использовать асинхронность ? Имеет ли вообще смысл, скажем для сетевых приложений с высокой нагрузкой ?
     
  19. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Сложновато как-то укладывается в голове неасинхронный сервер :).
     
  20. DeepBlue7

    DeepBlue7 Elder - Старейшина

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    В смысле использование асинхронных методов на сокетах и т.п.
     
Loading...
Similar Threads - Java начинающим задаем
  1. b3
    Replies:
    4
    Views:
    2,874