Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Connexion impossible  (Lu 1118 fois)

0 Membres et 1 Invité sur ce sujet

Talchane

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Connexion impossible
« le: Mai 05, 2020, 04:21:43 pm »
Bonjour à  toutes et à  tous,
Je suis un débutant en communications réseau. J'essaye de créer un programme me permettant d'envoyer un message depuis mon pc afin qu'il soit reçu par un autre ordinateur et affiché sur ce dernier.
J'essaye de faire ça avec les requêtes TCP de la SFML mais étant débutant, je ne comprends pas pourquoi cela ne fonctionne pas.
Afin de faire cela, un programme tourne simultanément sur les 2 ordinateurs (un qui envoie les messages et un autre qui les reçoit).


Voici le code de l'ordinateur qui envoie les messages :

#include <iostream>
#include <SFML/Network.hpp>

#define PORT 53000 // Le port commun aux 2 PC
#define IP "192.168.0.**" // L'adresse Ipv4 de mon destinataire (client)


int main()
{
        sf::TcpSocket socket;
        sf::Socket::Status status = socket.connect(IP, PORT);
       
        if (status != sf::Socket::Done)
        {
            std::cout << "Erreur lors de la connection du socket." << std::endl;
                return (-1);
        }


        sf::TcpListener listener;

        if (listener.listen(PORT) != sf::Socket::Done)
        {
                std::cout << "Erreur"<< std::endl;
                return (-1);
        }

        listener.accept(socket);
        std::string message;

        do
        {
                std::cout << "Votre requete : ";
                std::cin >> message;

                if (socket.send(message.c_str(), message.size() + 1) != sf::Socket::Done)
                {
                    std::cout << "Impossible d'envoyer la requete." << std::endl;
                }
        } while (message != "exit");    // Quand le message envoyé sera "exit", alors le programme terminera
       
        return (0);
}
 

Et voici le code du PC qui reçoit (et affiche) les messages.

#include <SFML/Network.hpp>
#include <iostream>

#define PORT 53000  // Le port commun aux 2 PC
#define IP "192.168.0.**" // Adresse Ipv4 du pc qui envoie les messages

int main()
{
        sf::TcpSocket socket;
        sf::Socket::Status status = socket.connect(IP, PORT);
       
        if (status != sf::Socket::Done)
        {
             std::cout << "Erreur lors de la connection du socket." << std::endl;
             return (-1);
        }

        char data_r[2000];
        do
        {              
                std::size_t received;

                if (socket.receive(data_r, sizeof(data_r), received) != sf::Socket::Done)
                {
                        // Aucune requête reçue
                }
                else
                {
                        std::cout << received << " bytes recus :\n" << data_r << std::endl << std::endl;
                }

        } while(data_r != "exit");


        return (0);
}
 

Le problème est que sur les 2 ordinateurs, le message "Erreur lors de la connection du socket" apparait. J'en conclus que c'est le socket.connect() qui ne fonctionne pas.

Merci d'avance à  celui ou celle qui parviendra à  m'aider.

Cordialement.
« Modifié: Mai 21, 2020, 12:22:34 pm par Talchane »