J'ai une implémentation serveur/client python socket. Le serveur lit les données de la file d'attente et les transmet au client.La file d'attente python lisant les mêmes données
Le client le lit et l'affiche. Lorsque j'exécute ce code, le client n'affiche que les 10 premières fois dans la file d'attente. aussi chaque fois les mêmes 10 fois sont envoyés au client.
Voici mes données dans le client.
Client2 received data: "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]["test-msg---0", "test-msg---1", "test-msg---2", "test-msg---3", "test-msg---4", "test-msg---5", "test-msg---6", "test-msg---7", "test-msg---8", "test-msg---9"]
Code Serveur: -
# server2.py
import socket
from threading import Thread
from SocketServer import ThreadingMixIn
import Queue
import json
TCP_IP = 'localhost'
TCP_PORT = 9999
BUFFER_SIZE = 1024
q = Queue.Queue()
for i in range(50000):
print 'put data'
q.put("test-msg---" + str(i))
def queue_get_all(q):
items = []
maxItemsToRetreive = 10
for numOfItemsRetrieved in range(0, maxItemsToRetreive):
try:
if numOfItemsRetrieved == maxItemsToRetreive:
break
items.append(q.get_nowait())
except Empty, e:
print 'Queue empty'
return items
class ClientThread(Thread):
def __init__(self,ip,port,sock):
Thread.__init__(self)
self.ip = ip
self.port = port
self.sock = sock
print " New thread started for "+ip+":"+str(port)
def run(self):
# filename='mytext.txt'
# f = open(filename,'rb')
while True:
# l = f.read(BUFFER_SIZE)
l = queue_get_all(q)
while (l):
self.sock.sendall(json.dumps(l))
#print('Sent ',repr(l))
# l = f.read(BUFFER_SIZE)
if not l:
f.close()
self.sock.close()
break
tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpsock.bind((TCP_IP, TCP_PORT))
threads = []
while True:
tcpsock.listen(5)
print "Waiting for incoming connections..."
(conn, (ip,port)) = tcpsock.accept()
print 'Got connection from ', (ip,port)
newthread = ClientThread(ip,port,conn)
newthread.start()
threads.append(newthread)
for t in threads:
t.join()
code client
# Python TCP Client A
import socket
host = socket.gethostname()
host = 'localhost'
port = 9999
BUFFER_SIZE = 2000
MESSAGE = raw_input("tcpClientA: Enter message/ Enter exit:")
tcpClientA = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpClientA.connect((host, port))
while MESSAGE != 'exit':
# tcpClientA.send(MESSAGE)
data = tcpClientA.recv(BUFFER_SIZE)
print " Client2 received data:", data
MESSAGE = raw_input("tcpClientA: Enter message to continue/ Enter exit:")
tcpClientA.close()