From: Joel VanderWerf Date: 2007-09-05T08:05:41+09:00 Subject: Re: Socket send functions only allow you to send strings? Ryan Parmeter wrote: > I am writing a small TimeP (RFC 868) server to sync time with some > networking equipment. The equipment that shall go nameless requires the > use of UDP. > > As far as I can tell, my only option to write to a UDPSocket is to use > the send method, which takes a string. I need to send a 32bit integer > representing the date in a UDP packet and I'd love to use something > like: > > myUDPsocket.send( Time.now.to_i, 0, host, port) > > In my situation I can't change the receiving program to accept a string > or I could do it that way. I can't convert the integer to a string > either because that would blow my 32 bit requirement. Does anyone have > any idea? Strings are just blobs of binary data, when they go through #send. The receiver doesn't know it started life as a ruby string. If you want structure, use #pack. You'll need to know what byte-order the client and server should use to communicate. Assuming big-endian: myUDPsocket.send([Time.now.to_i].pack("N"), 0, host, port) -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407