|
|
|
| Три схожих вопроса
Скрипт получает данные. Нужно
1) Получит данные в двоичной форме, то есть без всяких там преобразований типов.
2) Поменять старшие байты с младшими, то есть получает F8 A2 на выходе A2 F8
3) Разбить число из 6 байт на несколько 2Ah 8Bh СFh на $a = 2Ah $b = 8Bh СFh. Нужен сам принцип.
Пока все. Хотел делать это на c++. Но я не знаю, как там работать с протоколом tcp без MFC или WinAPI (если такое вообще возможно) | |
|
|
|
|
|
|
|
для: Artem S.
(13.06.2005 в 08:11)
| | 1) Данные как поступают, откуда?
2) Что-то не прпомню в PHP никаких специальных функций для работы с отдельными битами (MySQL и та, обладает гораздо более широкими возможностями). Это нужно делать на PHP или С++.
3) Опять же вопрос, это на каком языке? На С++ это уж больно легко приведением типов осуществить. PHP - слаботипизированный язык но идея состоит в том, чтобы брать двоичную последовательность в виде строки и резать её при помощи обычных строковых функций. Пусть имеется строка $bt из 6 байт, тогда задачу можно решить следующим образом.
<?php
$a = substr($bt,0,3);
$b = substr($bt,4);
?>
|
PS Для работы с tcp в Windows применяется библиотека WinSock 2 (это WinAPI). Если сможете обязательно достанте "Программирование в сетях Windows" Э. Джонса, Д. Оланда, а так же посетите http://www.firststeps.ru/ NetWork->WIN Socket | |
|
|
|
|
|
|
|
для: cheops
(13.06.2005 в 13:27)
| | Не думал что так намучаюсь с типами в php...
Хочу сделать два варианта - на "с" и на "php". C приемом данных я, кажется, понял, а вот с отправлением никак не могу. (в php)
Скажем нужно отправить int 0x0001 (0000 0000 0000 0001)
Ничего лучше чем отправит строчку не придумал =(
chr(00).chr(00)........chr(00).chr(01)
Нет никакого другого решения для отправки двоичных данных?
P.S. Если я буду использовать WinSock, я не смогу откомпилировать прогу на сервере с RedHat. Может есть более гибкий метод? | |
|
|
|
|
|
|
|
для: Artem S.
(13.06.2005 в 13:57)
| | И вряд ли, что-то лучшее придумаете... А куда отправляете?
PS TCP всегда реализуется на уровне операционной системы, в Windows - WinSock, в RedHat - сокеты Беркли... Чёрт... была недавно в продаже книжка толстая-претолстая с тёмно-зелённой обложкой... у меня сейчас под рукой её нет, а название из головы вылетело. В любом случае написать код, который работал бы в обеих операционных системах на С++ вряд ли получиться, если только не разрабатывать библиотеку-обёртку для каждой из операционных систем, а в приложении пользоваться интерфейсом этой библиотеки. | |
|
|
|
|
|
|
|
для: cheops
(13.06.2005 в 18:48)
| | >> А куда отправляете?
Конекчусь к серверу ICQ =) Была тут моя тема про протокол, спрашивал....
Ну в общем залогонится получилось, осталось научится данные обрабатывать =) | |
|
|
|