Salut à tous ! J'ai finalement décidé de progresser avec les sockets en C (le début du tuto était vraiment lent et ennuyant mais j'ai finalement percé :cool:)
J'ai donc décidé de faire un mini chat ! (j'ai vu qu'il y avait un sujet dessus mais le code était vraiment différent et beaucoup plus compliqué :s
Bref, j'ai fait en sorte d'être le plus clair parce que lire et corriger un code concernant les sockets n'est JAMAIS amusant ou facile !
Côté serveur !
Bon, ce code est plutôt simple, je l'ai simplifié au maximum !
Côté client !
voila a quoi ressemble un echange.
Capture.jpg
Ce serait vraiment génial si quelqu'un pourrait me dire quel est le problème !
J'ai donc décidé de faire un mini chat ! (j'ai vu qu'il y avait un sujet dessus mais le code était vraiment différent et beaucoup plus compliqué :s
Bref, j'ai fait en sorte d'être le plus clair parce que lire et corriger un code concernant les sockets n'est JAMAIS amusant ou facile !
Côté serveur !
Code:
int main (void)
{
// Je déclare mes variables !
SOCKET Masock;
SOCKADDR_IN Monaddresse;
SOCKET clientsock;
SOCKADDR_IN clientaddresse;
char message[200] = "Connexion etablie !!!";
char clientmessage[200]="";
int taille=sizeof(Monaddresse);
int tailleclient = sizeof(clientaddresse);
int erreur=0;
int i=1;
// fin de la déclaration !
Masock = socket(AF_INET, SOCK_STREAM, 0); //création de la socket
if(Masock != INVALID_SOCKET)
{
//configuration de la socket
Monaddresse.sin_addr.s_addr = htonl(INADDR_ANY);
Monaddresse.sin_family = AF_INET;
Monaddresse.sin_port = htons(23);
erreur= bind(Masock, (SOCKADDR*)&Monaddresse,taille);
//fini !
if(erreur!= SOCKET_ERROR)
{
erreur= listen(Masock, 5);
if(erreur!= SOCKET_ERROR)
{
// on attends que quelqu'un se connecte :p
clientsock = accept(Masock, (SOCKADDR*)&clientaddresse, &tailleclient);
// quelqu'un s'est connecté ! :D
if(erreur!= SOCKET_ERROR)
{
while(i)
{
send(clientsock, message, 200, 0); //j'envoie le message: "connexion établie !"
printf("Chaine envoyee : %s\n\n", message);
lire(message,200); //un simple gets amélioré (je demande ce que je veux envoyer au client ensuite)
/* je ne peux recevoir un message qu'après en avoir envoyé un, mais ce n'est pas le problème pour le moment*/
if(recv(Masock, clientmessage, 200, 0) != SOCKET_ERROR)
{
printf("Recu : %s \n",clientmessage);
}
}
Côté client !
Code:
int main(void)
{
//déclaration des variables !
int i=1;
SOCKET serversock;
SOCKADDR_IN serveraddr;
SOCKET Masock;
SOCKADDR_IN Masin;
char buffer[200] = "";
char message[200]="connexion etablie avec le serveur";
// fin de la déclaration des variables
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
// pas de bind car c'est le client :p
if(connect(sock, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR) // on essaye de se connecter !
{
while(i)
{
if(recv(sock, buffer, 200, 0) != SOCKET_ERROR)
{
printf("Recu : %s \n", buffer); // on affiche ce que l'on reçoit
}
erreur= send(serversock, message, 200, 0); //l'erreur est ici je suppose.
if(erreur)/*La fonction retourne SOCKET_ERROR en cas d'erreur, sinon elle retourne le nombre d'octets envoyés.*/
{
printf("NOMBRE D OCTET ENVOYES: %d\n",erreur);
}
printf("Chaine envoyee : %s\n\n", message); // on montre ce qu'on a envoyé.
lire(message,200); // on demande ce que l'utilisateur veut envoyer.
}
}
Capture.jpg
Ce serait vraiment génial si quelqu'un pourrait me dire quel est le problème !
from Hackademics : Forum de hacking hackers white hat cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1ogNpJj
via IFTTT
Aucun commentaire:
Enregistrer un commentaire