t0Xic_h
Messages postés1Date d'inscriptionmardi 29 mai 2007StatutMembreDernière intervention15 juillet 2007
-
15 juil. 2007 à 21:40
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 2007
-
16 juil. 2007 à 18:15
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 ?
/*********************************/
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");
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");}
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");
/*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");}
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 16 juil. 2007 à 18:15
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)