transfert de fichier, client serveur - C#/.NET managed - Programmation
Marsh Posté le 28-11-2009 à 12:51:11
déjà le "while(true)" c'es tpas terrible.
sinon pour tes flux, c'est foireux aussi. En cas d'exception, tu ne fermes pas tes flux. Tu risques que le fichier soit locké dans ce cas.
Ensuite, si ton fichiers contient des caractères spéciaux, en ASCII tu risques d'avoir des pertes.
Marsh Posté le 28-11-2009 à 13:48:48
moi23372 a écrit : déjà le "while(true)" c'es tpas terrible. |
Pourquoi ? Le serveur tourne sans arrêt, non ?
moi23372 a écrit : Ensuite, si ton fichiers contient des caractères spéciaux, en ASCII tu risques d'avoir des pertes. |
Donc je dois faire comment ?
Marsh Posté le 29-11-2009 à 20:06:38
et quoi le jour ou tu veux arrêter, tu kill le process? pas terrible comme solution. Il faut au moins prévoir une porte de sortie.
Pour l'ASCII, faut plutot passer en UNICODE.
Marsh Posté le 30-11-2009 à 15:42:54
Suis-je obligé de transformer les données en mode binaire pour les envoyer via socket, ou bien je peux es envoyer sous forme de chaine de caractère directement ?
Marsh Posté le 02-12-2009 à 20:39:39
les sockets fonctionnent en binaire.
Marsh Posté le 08-12-2009 à 17:04:28
Je me souviens qu'en langage C je pouvais envoyer directement une chaine de caractères via socket.
Marsh Posté le 08-12-2009 à 20:11:36
ça je ne crois pas. Ayant fait du C, les sockets fonctionne bien en binaire en C
Marsh Posté le 09-12-2009 à 14:23:55
moi23372 a écrit : ça je ne crois pas. Ayant fait du C, les sockets fonctionne bien en binaire en C |
ben regarde le 2eme argument de send par exemple:
int send(int sockfd, const void *msg, int len, int flags);
Un code typique pourrait être:
Code :
|
Source: http://vidalc.chez.com/lf/socket.html#sendrecv
Je ne sais pas si on peux en C# envoyer une chaine de caractères directement comme ça.
Marsh Posté le 13-12-2009 à 17:21:34
en c c'est bien un pointeur (void *). En c# c'est du binaire (tout comme en java).
Pour convertir il suffit d'utiliser la classe Encoding.Unicode.GetBytes(String str);
Marsh Posté le 08-01-2010 à 14:39:09
Ouais, enfin si t'envoies directement les bytes lis par ton filestream, t'auras pas à t'emmerder à les décoder en texte pour les réencoder pour rien...
Sinon, je me suis toujours demandé moi aussi comment faire pour qu'une application console attende gentiment sans s'arrêter. le while(true) c'est naze, ok, mais quoi mettre d'autre ?
Marsh Posté le 08-01-2010 à 18:07:56
Nan, c'est pas ça mon problème...
Quand c'est qu'une application Forms ou Service, pas de souci, tu ne sors jamais du programme tant que tu ne le ferme pas explicitement.
Mais dans une Console, ça sort direct, je sais pas comment le mettre en pause sans while
Marsh Posté le 08-01-2010 à 23:13:08
Ben je vois un truc genre un readkey qui bloque le programme (et quand on appuie sur une touche, ça quitte le programme)
Et on joue avec les évènements asynchrones des sockets... ça devrait le faire, mais c'est à tester
Marsh Posté le 26-11-2009 à 15:15:07
salut
je voudrais faire un serveur munti-clients simple qui envoi un fichier a chaque client qui se connecte. j'ai fait le code suivant, mais comme je suis débutant en C# je vous demande si c'est une bonne façon de faire:
Serveur:
client:
merci