Réecriture des méthodes send et recv pour les sockets

Contenu du snippet

Il arrive souvent que l'on ne recoivent pas toute les informations attendu lors d'une connexion rézeau en python, il faut pour cela s'assurer que l'on a bien recu toutes les informations et pas seulement une partie, ici on réecris la méthode d'envoie et de réception qui ajoute la taille des informations à envoie/recevoir sur les 4 premiers caractères.

Source / Exemple :


class MaSocket:

	def __init__(self,socket):
		self.s = socket
			
	def send_data(self,data):

		taille = len(data) + 4
		prefixe =""
		for i in range(4):
			reste = taille % 256
			taille = taille // 256

			prefixe = chr(reste) + prefixe

		data = prefixe + data
		self.s.send(data)

	def recieve_data(self):

		data = self.s.recv(BUFFER_SIZE)
		len_data_recu = len(data)
		prefixe = data[:4]
		taille = 0
		for i in range(4):
			taille = taille * 256 + ord(prefixe[i]) 
		taille = taille - len_data_recu
		while taille > 0:
			new_data = self.s.recv(BUFFER_SIZE)
			data = data + new_data 
			taille = taille - len(new_data)
		return data[4:]

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.