За последние 24 часа нас посетили 17837 программистов и 1611 роботов. Сейчас ищут 1288 программистов ...

Байты

Тема в разделе "Решения, алгоритмы", создана пользователем GreatWasp, 1 дек 2008.

  1. GreatWasp

    GreatWasp Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Доброе время суток гуру PHP,
    Вообщем есть задача кинуть данные на определенный порт, считать и разобрать ответ.
    Как отрыть порт и т.д. прошу не рассказывать. Лучше расскажите как кинуть на порт массив байт. Есть исходник на делфи, там делают так:

    Код (Text):
    1. CopyMemory(@MSG[7],@s,4);
    2.   CopyMemory(@MSG[11],@x,1);
    3.   CopyMemory(@MSG[12],@Number.Text[1],x);
    4.   CopyMemory(@msg[12+x],@y,1);
    5.   CopyMemory(@msg[13+x],@Provider.Text[1],y);
    6.   CopyMemory(@msg[13+x+y],@z,1);
    7.   CopyMemory(@msg[14+x+y],@KEY.Text[1],z);
    Потом msg пишется в порт и все понятно. Но вот как в PHP составить похожий массив???
     
  2. GreatWasp

    GreatWasp Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    P.S. про pack и unpack смотрел но немного не понял на каком этапе применять.
    И еще не советуйте писать такие вещи на д.р. языках, нет возможности.
     
  3. Mae Stro

    Mae Stro Активный пользователь

    С нами с:
    21 ноя 2008
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Киров
    на этапе подготовки msg, естественно - вместо CopyMemory.
    Там же есть строка типизации с кучей вариантов, далее идут переменные.
     
  4. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Речь идет про TCP/IP порт или про COM-порт компьютера?!
    Если второе - то забей! т.е. теоритичесски это возможно, но на практике... сложно, нудно и все равно работать не будет
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Написать на С++ библиотеку к РНР
     
  6. GreatWasp

    GreatWasp Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Ребят, опять же говорю что ни на C ни на C++ написать возможности нет. В проекте принципиально это должно работать на PHP. Речь идет о TCP пакетах.

    Что за ночь надумал (так примерно).
    1. Сначало составляю пакет в обычном массиве.
    2. Прохожусь по массиву и привожу к типу методом pack().
    3.
    Код (Text):
    1.  
    2. $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
    3. socket_connect($socket, 'IP_ADDRESS', '1984');
    4. socket_write($socket, DATA, BYTE_LENGTH);
    5. ............... // .................... (чтение с сокета, закрытие сокета)
    собственно почти так как сказал Mae Stro.
    Пока не особо получается, но надеюсь на удачу =) выложу сюда если выйдет.
     
  7. GreatWasp

    GreatWasp Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Если кому-то будет интересно,
    провозившись часа 3 собрал пакет (методом pack). Но наткнулся на проблему шифрования данных.
    Было решено написать все-таки сторонее приложение =(

    На PHP проблему не решил.