Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Ruby Socket to Java Socket
Serge Savoie
9/25/2008 12:47:00 AM
Hello !
I have some problem trying to establish dialog between a Ruby
socket(client) and a Java server socket (java.net.ServerSocket).
Everytime I try to write on the server socket I get an "Invalid stream
header" error from the server...
s = TCPSocket.open("host", 9061)
s.write("test \n");
=> Error
Can someone give a little hint on how to start inthe right way on this ?
Thx a lot !
Seurdge
--
Posted via
http://www.ruby-...
.
3 Answers
Serge Savoie
9/25/2008 2:02:00 PM
0
Ok, I have experiment a lot and found that :
When the Java Server use :
in = requestSocket.getInputStream();
It works... I can read what the Ruby socket is sending...
But the real Java server that I have to talk with use :
in = new ObjectInputStream( new BufferedInputStream(
requestSocket.getInputStream() ) );
And in this case I get :
java.io.StreamCorruptedException: invalid stream header
at
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:753)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268)
at project1.SergeServer1.main(SergeServer1.java:44)
The client can't change the server so...
Is there a mean to force a header in a way that the ObjectInputStream
will be able to read what I send from Ruby ?
Here's my test Ruby code :
addrinfo = Socket::getaddrinfo('localhost', 9501, nil,
Socket::SOCK_STREAM)
addrinfo.each do |af, port, name, addr|
begin
sock = TCPSocket.new(addr, port)
sock.send("test", 0)
rescue
end
end
Thx in advance !
Seurdge
Serge Savoie wrote:
> Hello !
>
> I have some problem trying to establish dialog between a Ruby
> socket(client) and a Java server socket (java.net.ServerSocket).
>
> Everytime I try to write on the server socket I get an "Invalid stream
> header" error from the server...
>
> s = TCPSocket.open("host", 9061)
> s.write("test \n");
>
> => Error
>
> Can someone give a little hint on how to start inthe right way on this ?
>
> Thx a lot !
>
> Seurdge
--
Posted via
http://www.ruby-...
.
Jim Morris
9/25/2008 5:47:00 PM
0
Serge Savoie wrote:
> Ok, I have experiment a lot and found that :
>
> When the Java Server use :
> in = requestSocket.getInputStream();
>
> It works... I can read what the Ruby socket is sending...
>
> But the real Java server that I have to talk with use :
>
> in = new ObjectInputStream( new BufferedInputStream(
> requestSocket.getInputStream() ) );
>
> And in this case I get :
>
> java.io.StreamCorruptedException: invalid stream header
> at
> java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:753)
> at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268)
> at project1.SergeServer1.main(SergeServer1.java:44)
>
The Java server is reading a Marshalled Java object, Usually that will only be used for two Java
processes talking to each other.
If you are sending very simple Java Objects you could format it in Ruby and transmit it, but it
would be messy. You will have to read the Sun documents on Java serialized object formats, look at
the ObjectInputStream Javadoc for references to the required formats.
Try using JRuby instead and serialize the Java object in Java.
--
Jim Morris,
http://blog.w...
Serge Savoie
9/30/2008 12:15:00 AM
0
Thx jim...
we have finally made it by programming a little gateway that talk with
"ordinary" output stream to the outside world (Ruby) and translate to
his older brother that talk with pure Java stream...
Jim Morris wrote:
> Serge Savoie wrote:
>> requestSocket.getInputStream() ) );
>>
>> And in this case I get :
>>
>> java.io.StreamCorruptedException: invalid stream header
>> at
>> java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:753)
>> at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268)
>> at project1.SergeServer1.main(SergeServer1.java:44)
>>
>
> The Java server is reading a Marshalled Java object, Usually that will
> only be used for two Java
> processes talking to each other.
>
> If you are sending very simple Java Objects you could format it in Ruby
> and transmit it, but it
> would be messy. You will have to read the Sun documents on Java
> serialized object formats, look at
> the ObjectInputStream Javadoc for references to the required formats.
>
> Try using JRuby instead and serialize the Java object in Java.
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Ruby Socket to Java Socket
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password