Invalid orincomplete multibyte or wide character

chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009 - 29 juil. 2009 à 09:42
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009 - 29 juil. 2009 à 16:32
Bonjour,

le programme que je suis en train de faire doit permettre de se connecter à une socket existante, d'envoyer une donnée et en recevoir la réponse. Voici le code :
int main (int argc, char ** argv)
{
int mysock;
struct sockaddr_in myaddr ;
char * erreur = "0";
char * recv_data;
char * send_data = argv[2];
int port = (int)(argv[1]);
if(argv[1] == "help" || argc < 3)
{
help();
}
else
{
myaddr.sin_family = AF_INET;
myaddr.sin_addr.s_addr = INADDR_ANY;
myaddr.sin_port = htons ( port );
myaddr.sin_zero[8];

if ((mysock = socket(AF_INET,SOCK_STREAM,0)) != -1)
{
int reUseAddress = 1 ;
if (setsockopt(mysock,SOL_SOCKET,SO_REUSEADDR,(char *) &reUseAddress,sizeof(reUseAddress)) >= 0)
{
if((bind (mysock,( struct sockaddr * ) &myaddr,sizeof ( myaddr ))) == 0 )
{
if((connect (mysock, ( sockaddr * ) &myaddr, sizeof ( myaddr ))) == 0)
{
int nonBlockingIO = 0;
if (ioctl(mysock,FIONBIO,&nonBlockingIO) == 0)
{
//send ( mysock, send_data, sizeof(send_data), 0 );
write ( mysock, send_data, sizeof(send_data));
//recv ( mysock, recv_data, sizeof(recv_data), 0 );
read( mysock, recv_data, sizeof(recv_data));
if(errno != 0)
{
erreur = strerror(errno);
}
}
else
{
erreur = strerror(errno);
}
}
else
{
erreur = strerror(errno);
}
}
else
{
erreur = strerror(errno);
}
}
else
{
erreur = strerror(errno);
}
}
else
{
erreur = strerror(errno);
}

if(close(mysock) -1 && erreur 0)
{
erreur = strerror(errno);
}
if(erreur != 0)
{
printf("\nErreur : %s\n",erreur);
}
else
{
printf("Données envoyées : %s\n",send_data);
printf("Données reçues : %c\n",recv_data);
}
}
}


La connexion se passe bien mais lorsque je fais le write ( le send donne la même chose ), errno me renvoie "Invalid orincomplete multibyte or wide character".

Quelqu'un peut pourrait il m'aider ?

Merci d'avance

5 réponses

4fiji Messages postés 6 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 1 septembre 2009
29 juil. 2009 à 10:33
Ce probleme doit avoir un lien avec l'Unicode. Es-ce que vous compilez en Unicode ?
0
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009
29 juil. 2009 à 10:38
Oué, j'ai oublié de préciser que le code est compiler sur un pc linux avec unicode utf-8.
Le fichier binaire est ensuite copié sur un linux embarqué.
0
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009
29 juil. 2009 à 10:46
Je dois le changer en quoi et comment pour que ça marche ?
0
4fiji Messages postés 6 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 1 septembre 2009
29 juil. 2009 à 15:23
Je pense qu'il faut convertir la chaine unicode en série d'octets pour l'envoyer octet par octet au lieu de l'envoyer caractère unicode par caractère unicode vu que les fonctions C attendent 1 octet par caractère...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009
29 juil. 2009 à 16:32
Désolé, je me suis remis au c il y a peu de temps donc si tu pouvais me mettre un exemple ça serais sympa
0
Rejoignez-nous