begin process at 2012 05 28 21:33:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

Envois et reception de commande


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Envois et reception de commande

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ée 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

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales