[socket] probleme d'envoi de fichier
bonjour,
je travaille sur un serveur ftp. Mon probleme est que quand j'envoie un stream de fichier le caractere end of file n'est envoyé que si j'appelle la methode close() sur le stream qui envoie le fichier et je suis bien embeté car ça ferme la socket coté serveur.
si je n'appelle pas la methode close() le client reste bloqué sur la methode read() car il attend le end of file.
est ce qu'il y a une autre façon de faire??
Re: [socket] probleme d'envoi de fichier
Citation:
Envoyé par soulhouf
bonjour,
je travaille sur un serveur ftp. Mon probleme est que quand j'envoie un stream de fichier le caractere end of file n'est envoyé que si j'appelle la methode close() sur le stream qui envoie le fichier et je suis bien embeté car ça ferme la socket coté serveur.
si je n'appelle pas la methode close() le client reste bloqué sur la methode read() car il attend le end of file.
est ce qu'il y a une autre façon de faire??
C'est normal qu'il reste bloqué jusqu'à ce que le client ferme le canal.
Il y a deux événements qui peuvent déloquer ta lecture:
1 - Fermeture du canal (le client appelle close)
2 - Le tampon est plein (difficile avec un un tampon de (512ko)
Une solution est que tu adoptes une protocole existant ex: FTP ou tu crées ton propre protocole (réinvention de la roue).
Si tu désires développer ton propre protocole, il serait préférable que tu travailles avec des blocs de tailles constantes par exemple 10ko. En plus ton serveur doit pouvoir gérer les timeouts.