TechieInsights wrote:
I am having problems with a socket connection to a Java server.  In
java I just open the socket, pass the length and then pass the bits
across the socket.

I created a socket object:

import socket

class MySocket:
        def __init__(self, host='localhost', port = 28192, buffsize = 1024):
                socket.setdefaulttimeout(10)

                self.host = host
                self.port = port
                self.buffsize = buffsize
                self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                self.socket.connect((host, port))

        def send(self, data):
                self.socket.send(data)

I recommend sendall() instead of send():

                self.socket.sendall(data)

send() doesn't guarantee to send all the data, so multiple sends might be needed to send it all. sendall() does that for you.


        def receive(self):
                return self.socket.recv(self.buffsize)

        def sendAndReceive(self, data):
                self.send(data)
                return self.receive()

        def close(self):
                self.socket.close()

But the java server gives the error:
WARNING: <Incoming> Message length invalid.  Discarding

The data is of type string (xml).  Am I doing something wrong?  I know
you have to reverse the bits when communicating from C++ to Java.
Could this be the problem? I figured it would not because it said the
length was invalid.  I just started looking at python sockets
tonight... and I don't have a real deep base with socket connections
as it is... any help would be greatly appreciated.

Greg
--
http://mail.python.org/mailman/listinfo/python-list


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to