IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

sockets problème de messages entre serveur et client


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut sockets problème de messages entre serveur et client
    bonjour tous le monde
    je programme une communication entre deux ordinateurs à l'aide des sockets, j'envois des message du client vers le serveur et du serveur vers le client y a pas de problèmes.

    mais ce que je veux c'est que par exemple lorsque j'envois un message du client vers le serveur j'utilise une condition if pour dire que j'ai reçu le bon message

    comment comparaître le contenu du buffer1 que j'ai envoyé du client vers le serveur et dire par exemple si j'envois 111 et faire une condition if pour ce contenu du buffer1 si == 111, j'affiche un message t dire que c'est le bon message

    j'utilise visual studio 2017

    merci

    code client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    //.........................................client....................................//////
    #include <winsock2.h>
    #include <iostream>
    #pragma comment(lib, "ws2_32.lib")
    #pragma warning(disable:4996)
     
    using namespace std;
     
    int main()
    {
    	WSADATA WSAData;
    	SOCKET server;
    	SOCKADDR_IN addr;
     
    	WSAStartup(MAKEWORD(2, 0), &WSAData);
    	server = socket(AF_INET, SOCK_STREAM, 0);
     
    	addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // replace the ip with your futur server ip address. If server AND client are running on the same computer, you can use the local ip 127.0.0.1
    	addr.sin_family = AF_INET;
    	addr.sin_port = htons(15555);
     
    	connect(server, (SOCKADDR *)&addr, sizeof(addr)); 
    	cout << "CLIENT !!!!!!" << endl;
    	cout << "client connected to server!" << endl;
     
     
    	char buffer1[1024];
    	cout << "inter the message for server!" << endl;
    	cin >> buffer1;
    	send(server, buffer1, sizeof(buffer1), 0);
    	cout << "Message sent to server! is : " << buffer1<< endl;
     
     
    	char buffer2[1024];
    	recv(server, buffer2, sizeof(buffer2), 0);
    	cout << "server says to client: " << buffer2 << endl;
    	memset(buffer2, 0, sizeof(buffer2));
     
     
    	//closesocket(server);
    	//WSACleanup();
    	//cout << "Socket closed." << endl << endl;
     
    	system("pause");
    }

    code serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    ////......................serveur....................../////
     
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
    #include <iostream>
    using namespace std;
     
    int main()
    {
    	WSADATA WSAData;
    	SOCKET server, client;
    	SOCKADDR_IN serverAddr, clientAddr;
     
    	WSAStartup(MAKEWORD(2, 0), &WSAData);
    	server = socket(AF_INET, SOCK_STREAM, 0);
     
    	serverAddr.sin_addr.s_addr = INADDR_ANY;
    	serverAddr.sin_family = AF_INET;
    	serverAddr.sin_port = htons(15555);
     
    	bind(server, (SOCKADDR *)&serverAddr, sizeof(serverAddr));
    	listen(server, 0);
     
    	cout << "SERVEUR !!!!!!" << endl;
    	cout << "serveur listening for incoming connections..." << endl;
     
    	char buffer1[1024];
    	int clientAddrSize = sizeof(clientAddr);
    	while ((client = accept(server, (SOCKADDR *)&clientAddr, &clientAddrSize)) != INVALID_SOCKET)
    	{
     
    		cout << "Client connected to serveur!" << endl;
    		recv(client, buffer1, sizeof(buffer1), 0);
    		cout << "Client says to serveur: " << buffer1 << endl;
    		memset(buffer1, 0, sizeof(buffer1));
     
     
     
    		if (buffer1[512] == '111')
    		{
     
    			cout << "le bon message est recu et c'est le : " << buffer1 << endl;
     
    		}
     
     
     
     
     
     
    		char a;
    		cout << "enter letter in server" << endl;
    		cin >> a;
    		if (a=='n')
    		{
     
    			char buffer2[1024] = "hello";
    			send(client, buffer2, sizeof(buffer2), 0);
    			cout << "Message sent to client!" << endl;
    		}
     
     
     
     
     
     
     
    		//closesocket(client);
    		//cout << "Client disconnected." << endl;
    	}
     
     
     
    	system("pause");
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Ton problème est que if (buffer1[512] == '111') va vérifier si le 513eme caractère de buffer vaut '111', ce qui n'est sûrement pas près d'arriver...
    La comparaison de chaînes de caractères nécessiterait au moins d'utiliser une chaîne de caractères, qui est délimitée en C++ par les doubles quotes " ". Et quand bien même, comparer des chaînes ne se fait pas ainsi mais en passant par std::string pour être plus simple. Sinon on compare des tampons, et ça passe par l'api C style strcmp (qui a des équivalents std).
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Problème de Socket asynchrone entre serveur et client
    Par SimFaridas dans le forum Delphi
    Réponses: 1
    Dernier message: 17/10/2016, 10h53
  2. Réponses: 3
    Dernier message: 18/02/2015, 18h06
  3. Problème RPC entre serveur et client
    Par vittel dans le forum GWT et Vaadin
    Réponses: 11
    Dernier message: 12/06/2012, 14h09
  4. Réponses: 2
    Dernier message: 14/04/2011, 10h54
  5. échange message entre Serveur et client
    Par boukharyinfos dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 19/05/2009, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo