22 сентября, суббота 14:59
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

HSM Хостовые команды

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • HSM Хостовые команды

    Помогите, пожалуйста!
    Написал програмку на Perl, для генирации и печатти компоненты:
    Код:
    #! /usr/bin/perl -w
    use strict;
    use IO::Socket;
    use constant SIMPLE_TCP_PORT => 1500;
    use constant REMOTE_HOST => '192.168.1.230';
    
    
    my $remote = REMOTE_HOST;
    my $remote_port = SIMPLE_TCP_PORT;
    
    my $sock_obj = IO::Socket::INET->new( PeerAddr => $remote, PeerPort => $remote_port,Proto => 'tcp' )
    or die "oo_tcp_c3: could not create socket object: $!\n";
    
    print "Sending 1234A2002UPodrazdelenie 1;Terminal 1;Ivanov\n";
    
    print $sock_obj "1234A2002UPodrazdelenie 1;Terminal 1;Ivanov";
    
    sleep(2);
    
    while ( $sock_obj> )
    {
    print $_;
    }
    $sock_obj->close;
    Сетевые настройки HSM:
    Message header length: 04
    Protocol: Ethernet
    Character format: ASCII
    IP address: 192.168.001.230
    Well-Known-Port: 01500
    Transport: UDP and TCP, 5 connections
    TCP Keep_Alive value: 120
    Default gateway address: 192.168.001.239
    Subnet mask: 255.255.255.000

    Но чего-то не работает, соединение вроде есть, но ответа никакого.
    Подскажите, что неправильно?

  • #2
    hsm должен что-нибудь да ответить! у меня это код с ошибкой.. у вас наверное тоже самое..
    что за hsm?
    RU-TOP.net

    Комментарий


    • #3
      svv_val
      В TCP режиме необходимо перед посылкой
      команд послать заголовок с длиной команды(2 байта)
      Nick_st

      Комментарий


      • #4
        Сообщение от PEAL Посмотреть сообщение
        hsm должен что-нибудь да ответить! у меня это код с ошибкой.. у вас наверное тоже самое..
        что за hsm?
        У меня Thales HSM 8000. Нет, он просто молчит. Посылаю это сообщение на другой SocketServer - получает, отвечает.
        Где-то читал, что возможно сокет не хочет посылать маленькое сообщение.
        Пробовал так:
        PHP код:
        .........................
        my $msg_count "a\02A2002UPodrazdelenie;555;Golubev";
        my $big_chunk ';'  x  6500;
        my $data $msg_count.$big_chunk;
        warn "Sending  to server ...\n";
             
        sendTCP_SOCK$data)
        or 
        warn "tcp_c1: problem with send: $!\n"
        Получается, но очень долго, да и не корректно выходит.

        Комментарий


        • #5
          svv_val
          А где длина сообщения?
          сначала должна быть длина сообщения (причем не в Intel нотации),
          потом четыре байта заголовка и только затем A2 и т.д.
          Nick_st

          Комментарий


          • #6
            Сообщение от nick_st Посмотреть сообщение
            svv_val
            В TCP режиме необходимо перед посылкой
            команд послать заголовок с длиной команды(2 байта)
            А как это сделать? В настройках HSM длина загловка стоит 4, нужно изменить? Или это не то?
            Напишите ,пожалуйста, пример сообщения для команды NC.

            Комментарий


            • #7
              svv_val
              нет менять ничего не нужно, т.е.
              0x00 0x06 "HHHHNC"

              т.е. сначала длина всей команды 6 байтов, потом собственно команда
              (заголовок HHHH и NC, заголовок он прикладной туда можно все что
              угодно вставить)
              Nick_st

              Комментарий


              • #8
                Спасибо! Буду пробовать :-)

                Комментарий


                • #9
                  Сообщение от nick_st Посмотреть сообщение
                  svv_val
                  нет менять ничего не нужно, т.е.
                  0x00 0x06 "HHHHNC"
                  Скажите, пожалуйста, как мне в одно сообщение, посылаемое HSM, соеденить длину сообщения и комманду? Если все в строковом формате:
                  PHP код:
                  AnsiString Send_text"ssssNC";
                     
                  AnsiString b 0x06;
                     
                  Send_text Send_text;
                     
                  Socket->SendText(Send_text); 
                  То оно просто посылает "6ssssNC". А не длину сообщения.

                  Комментарий


                  • #10
                    svv_val
                    На каком языке программирования?
                    Nick_st

                    Комментарий


                    • #11
                      svv_val
                      На PHP, что-то типа:

                      PHP код:
                       $command "HHHHNC";
                       
                      $bt1 = (int)strlen($command)/256;
                       
                      $bt2 = (int)strlen($command)%256;
                       
                      Socket->SendText(chr($bt1).chr($bt2).$command); 
                      Nick_st

                      Комментарий


                      • #12
                        СПАСИБО ОГРОМНОЕ! :-)

                        Комментарий


                        • #13
                          Пробовал написать на C#. Не могу получить ответа:
                          input = "HHHHNC";
                          int one = (int)input.Length / 256;
                          int two = (int)input.Length % 256;
                          server.Send(Encoding.ASCII.GetBytes((char)one+(char)two+"HHHHNC"));
                          int recv = server.Receive(data); // здесь виснет
                          stringData = Encoding.ASCII.GetString(data, 0, recv);
                          Console.WriteLine(stringData);

                          Подскажите, пожалуйста, что не так.
                          И может кто то уже пробовал посылать команды генерации ключей ZMK. Я новичок. Буду признателен если поделитесь опытом.
                          Заранее благодарен.

                          Комментарий

                          Пользователи, просматривающие эту тему

                          Свернуть

                          Присутствует 1. Участников: 0, гостей: 1.

                          Обработка...
                          X