I have created a TCP client in python, hoping it would listen for the constant stream of data being thrown at it. But it hangs after just reading 10 bytes.
Python:
import socket
TCP_IP = '10.0.0.25'
TCP_PORT = 31031
BUFFER_SIZE = 4096
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
while 1:
data = s.recv(BUFFER_SIZE)
print (data)
Output:
b'\xff\x00\x00\x00\x00\x00\x00\x00\x01\x7f'
ZMQ:
class ZmqClient(object):
def __init__(self):
try:
self.host = '10.0.0.25'
self.port = 31031
context = zmq.Context()
self.socket = context.socket(zmq.SUB)
self.socket.connect("tcp://{0}:{1}".format(self.host, self.port))
self.socket.setsockopt_string(zmq.SUBSCRIBE, "")
except Exception as e:
logger.exception("CAN'T ESTABLISH CONNECTION WITH ZMQ SERVER : %s" % e)
def startReceiving(self):
while 1:
SocketData = self.socket.recv(4096)
print(SocketData)
if __name__ == "__main__":
z = ZmqClient()
z.startReceiving()
Output:
b'\x04\x00\x00\x00BSE\x00\x00\x00\x00\x00\x00\x00\x00\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x04\x00\x00\x00BSE\x00\x00\x00\x00\x00\x00\x00\x00\x01\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
I want to replicate the behavior of ZMQ in Python, actually I was writing a TCP client for tornado and found the same issue with it, so was able to replicate it in simple Python client.
What am I doing wrong?