Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Envois et reception de commande [ Windows / Réseau & Internet ] (t0Xic_h)

dimanche 15 juillet 2007 à 21:40:53 | Envois et reception de commande

t0Xic_h

Salut
Voici mon code source .
La connection entre le client et le serveur se passe bien, mais je n'ai pas su ecrirele code qui me permettera d'envoyer l'invite de commande avec une boucle...
Pourriez vous m'aider ?

Code serveur

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<winsock2.h>
 
/*********************************/
int erreur=0;
WSAData initialisation;
SOCKET ma_socket;
SOCKET acceptation;
int temp;
SOCKADDR_IN info_client;
char buffer[65000];
int reception;
/********************************/
 
int main()
{
/*initialisation de winsock*/
erreur = WSAStartup(MAKEWORD(2,0), &initialisation);
if(erreur!=0)
{printf("Erreur lors de l'initialisation de WSAStartup. %d\n", WSAGetLastError());}
else
{printf("WSAStartup : OK\n");}
/*ouverture de la socket*/
ma_socket = socket(AF_INET, SOCK_STREAM, 0);
if(ma_socket!=INVALID_SOCKET)
{printf("Opening socket : OK\n");}
else
{printf("Erreur lors de l'ouverture de la socket. %d\n", WSAGetLastError());}
/*sockoption*/
temp=1;
erreur = setsockopt(ma_socket, IPPROTO_TCP, TCP_NODELAY, (char*)&temp, sizeof(temp));
if(erreur!=0)
{printf("Erreur lors de la definition de l'algorithme de Nagle. %d\n", WSAGetLastError());}
else
{printf("Algorithme de Nagle : OK\n");}
 
/*ecoute sur une ip et un port*/
info_client.sin_family=AF_INET;
info_client.sin_addr.s_addr=INADDR_ANY; // ecoute sur les IPs locales.
info_client.sin_port=htons(7777);
erreur=bind(ma_socket, (struct sockaddr*)&info_client, sizeof(info_client));
if(erreur!=0)
{printf("Erreur lors de la lise en ecoutes sur l'ip et/ou le port. %d\n", WSAGetLastError());}
else
{printf("IP et port : OK\n");}
 
/*attente de la connection du client*/
erreur=99;
while(erreur!=0)
{erreur=listen(ma_socket, 1);
printf("Attente de la connection du client.\n");}
 
/*acceptaion de la demande de connection*/
temp=sizeof(info_client);
acceptation=accept(ma_socket, (struct sockaddr*)&info_client, &temp);
if(acceptation!=INVALID_SOCKET)
{printf("connection du client : OK\n");
 
 
/***************************************************************/
memset(buffer, 0, sizeof(buffer));
strcpy(buffer, "\nRFT >"); // l'invite de commande
send(ma_socket, buffer, strlen(buffer), 0);
 
recv(acceptation, buffer, 1515, 0); // reception de la commande
if(strcpm(buffer, "com1")==0); //comparaison de la commande
{memset(buffer,0,sizeof(buffer));
strcpy(buffer, "\nCommande Correcte.");
send(ma_socket, buffer, sizeof(buffer));}
/***********************************************************/}
else
{printf("Connection invalide. %d\n", WSAGetLastError());}
 
/*reception des données*/
reception=recv(acceptation, buffer, 1515, 0);
if(reception==SOCKET_ERROR)
{printf("Aucune donnes recue. %d\n", WSAGetLastError());}
else
{buffer[reception]=0;
printf("Le Client dit :\n\t%s", buffer);}
 
/*Fermeture de la cession TCP*/
erreur=shutdown(acceptation, 2);
if(erreur!=0)
{printf("Erreur lors de la fermeture de la session TCP. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la session TCP : OK\n");}
 
/*fermeture des 2 sockets*/
erreur=closesocket(acceptation);
if(erreur!=0)
{printf("Erreur lors de le fermeture de la socket 1. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la socket : OK\n");}
 
erreur=closesocket(ma_socket);
if(erreur!=0)
{printf("Erreur lors de le fermeture de la socket 2. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la socket : OK\n");}
 
/*Fermeture de winsock*/
erreur=WSACleanup();
if(erreur!=0)
{printf("Ereur lors de la fermeture de WinSock. %d\n", WSAGetLastError());}
else
{printf("Fermeture de winsock : OK\n");}
 
system("PAUSE");
 
}
 

code client

#include<winsock2.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
/*Le client*/
 
int erreur=0;
WSAData initialisation;
SOCKET ma_socket;
int temp;
SOCKADDR_IN info_serveur;
char buffer[65000];
int envoi;
 
int main()
{
/*initialisation de winsock*/
erreur = WSAStartup(MAKEWORD(2,0), &initialisation);
if(erreur!=0)
{printf("Erreur lors de l'initialisation de WSAStartup. %d\n", WSAGetLastError());}
else
{printf("WSAStartup : OK\n");}
/*ouverture de la socket*/
ma_socket = socket(AF_INET, SOCK_STREAM, 0);
if(ma_socket!=INVALID_SOCKET)
{printf("Opening socket : OK\n");}
else
{printf("Erreur lors de l'ouverture de la socket. %d\n", WSAGetLastError());}
/*sockoption*/
temp=1;
erreur = setsockopt(ma_socket, IPPROTO_TCP, TCP_NODELAY, (char*)&temp, sizeof(temp));
if(erreur!=0)
{printf("Erreur lors de la definition de l'algorithme de Nagle. %d\n", WSAGetLastError());}
else
{printf("Algorithme de Nagle : OK\n");}
 
/*Ouverture de la session TCP*/
info_serveur.sin_family=AF_INET;
info_serveur.sin_addr.s_addr=inet_addr("127.0.0.1");
info_serveur.sin_port=htons(7777);
 
erreur=connect(ma_socket, (struct sockaddr*)&info_serveur, sizeof(info_serveur));
if(erreur!=0)
{printf("Erreur lors de l'ouverture de la session TCP. %d\n", WSAGetLastError());}
else
{printf("Remote Victim Fucked ...\n");
 
 
 
/***********reception de l'invite*************************/
acceptation=accept(ma_socket, (struct sockaddr*)&info_serveur, sizeof(info_client));
recv(acceptation, buffer, 1515, 0);
/********************/
printf("\n%s ", buffer);
memset(buffer, 0, sizeof(buffer));
char commande[50]
scanf("%s", &commande);
/********************evois de la commande*********/
strcpy(buffer, commande);
envoi=send(ma_socket, buffer, strlen(buffer), 0);
memset(buffer, 0, sizeof(buffer));
/**********************************************************/
}
 
 
 
 
/*fermeture de la cession TCP*/
erreur=shutdown(ma_socket, 2);
if(erreur!=0)
{printf("Erreur lors de la fermeture de la session TCP. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la session TCP : OK\n");}
 
/*Fermeture de la socket*/
erreur=closesocket(ma_socket);
if(erreur!=0)
{printf("Erreur lors de le fermeture de la socket. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la socket : OK\n");}
 
/*Fermeture de winsock*/
erreur=WSACleanup();
if(erreur!=0)
{printf("Ereur lors de la fermeture de WinSock. %d\n", WSAGetLastError());}
else
{printf("Fermeture de winsock : OK\n");}
 
system("PAUSE");
 
}
 


lundi 16 juillet 2007 à 18:15:55 | Re : Envois et reception de commande

The_Guardian


Bonjour,

Déjà ton code est pas indenté. Je le lis comme même.

Bon.

Dans le serveur, au niveau du "send" il faut mettre un \n a la fin sinon le printf du client marchera jamais. On met toujours le \n apres la ligne, pas avant la ligne(c'est valable toujours, donc pour le serveur et le client)

fais deja ca et indente ton code stp.

Une autruche ne se cuit pas aux petits lardons



Cette discussion est classé dans : buffer, erreur, printf, fermeture, socket


Répondre à ce message

Sujets en rapport avec ce message

socket winsock grrr [ par dekai ] Voilà mon pb lorsque je tente un send ou recv j'obtient une erreur et ej comprends pas pourquoi. Merci de m'aider.Voici le code (je travaille sous dev erreur 10038 [ par made_in_france ] Hello ! j'ai un probleme avec la fonction bind de mon programme. En effet cette fonction me renvois l'erreur 10038 « attempted ». Est ce que quelqu'un protocole TCP HELP me [ par lolobardon ] Bonjour à tous,je suis actuellement à Pékin pour effectuer un semestre d'études. Je suis élève ingénieur en électronique mais l'embêtant c'est qu'ici UpdateResource() ICON [ par maladedede ] BonjourJ'ai deja utiliser plusoeur fois Update resource pour changer des resources du type RCDATA d'un ".exe"Et la c'est la resourc ICON du ".exe" que Erreur 400 Bad Request avec une socket [ par cz1702 ] Bonjour à tous, j'ai fait un programme utilisant une socket (winsock2). Je n'ai aucun problème pour accéder à la plupart des adresses sur les serveur Bind socket erreur [ par Taron31 ] Bonjour, en codant avec les socket j'ai une erreur avec le bind, pourtant je ne décèle pas d'erreur au niveau du code, apparement c'est un pb techniqu Probléme pour lire le buffer au lancement de la connexion [ par logant83 ] Bonsoir, voila enfaite j'ai établi une connexion sur un server irc grace au socket mais quand je recois sur le buffer les différente informations (Ell ReadFile et port USB [ par je_ne_viens_qu1_fois ] Bonjour à tousJ'aurai besoin d'une aide en toute urgence concernant le dialogue avec un microcontroller via le port USB.J'ai résussi à faire le "Creat Probleme entre DLL et socket [ par XKaliBur ] Le probleme est que je réalise un hook sur mon clavier et que chaque frappe interceptée je veux l'envoyer via un socket à un serveur, mais des que j'e chat client server [ par electroonn ] Bonjour, j'essaye de developper avec c++ une application de chat (client-server) sous windows, en voici le code:Server server; Client client; void m


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.