[Ruby] Re[2]: [Ruby] Послать массив в TCPsocket в HEX виде - Bug ???????????

Kachalov Anton mouse at linux.ru.net
Thu Jan 9 14:23:54 MSK 2003


Vladyslav пишет:

>Hello Alexander,
>
>Thursday, January 9, 2003, 11:55:18 AM, you wrote:
>
>
>Спасибо, после нескольких пасов помогло! :-)
>
>Но ...
>Оказалось что у меня в массиве были не только Fixnum но и String.
>Я попытался привести их всех к Fixnum и здесь я наткнулся на странное:
>
>irb(main):056:0> s = [ 1, 2, 3 ]
>[1, 2, 3]
>irb(main):057:0> t = [ 4, 5, 6, [7, 8] ]
>[4, 5, 6, [7, 8]]
>irb(main):058:0> a = [ s, t, 9, 10 ]
>[[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
>irb(main):059:0> a.flatten
>
a.flatten или a.flatten! ???

>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>irb(main):060:0> a[0].type
>Array
>
а если сейчас посмотреть на состав массива?

>
>Такое впечатление что после метода Flatten наследуются родительские
>типы.
>
>Баг ?
>  
>
не-а

>С Уважением!
>Влад
>
>
>
>AB> On Thu, Jan 09, 2003 at 11:37:06AM +0200, Vladyslav wrote:
>  
>
>>>Hello All,
>>>
>>>Предположим у меня есть
>>>
>>>@s = TCPsocket.open(host, port)
>>>r=[0x30,0x32,0x30,0x30,0x32,0x30,0x05,0x80,0x20,0xC0,0x80,0x00,0x30,0x30,0x30,0x30]
>>>
>>>r.each {|c|
>>>        @s.putc(c)
>>>       }
>>>
>>>На другой стороне получаю:
>>>30.32.30.30.32.30.05.80.20.C0.80.00.30.30.30.30
>>>Этот вариант не подходит мне , так как каждое число идет отдельным пакетом.
>>>Я же хочу кинуть весь массив одним пакетом.
>>>При этом вариант:
>>>@s.write(r)
>>>не проходит
>>>Получаю на другой стороне:
>>>30.32.30.30.35.30.34.38.35.31.32.38.33.32.31.39
>>>
>>>Есть предложения ?
>>>      
>>>
>AB> @s.write(r.pack("c*")) ?
>
>
>
>
>  
>
Rgds,
Anton

-- 
ALTLinux Team
http://www.altlinux.ru
LRN Team
http://www.lrn.ru
FreeCraft Team
http://freecraft.sourceforge.net/





More information about the Ruby mailing list