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

Développement 2D, 3D et Jeux Discussion :

Sockets : C/C++ ou Java/C#


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut Sockets : C/C++ ou Java/C#
    Citation Envoyé par ash.ice.loky Voir le message
    Sur ces points je reconnais l'avantage des langages tel que C# et JAVA qui donne une productivité accru par une lib standard bien plus fourni.
    euuhh je veux bien mais qu'est ce que les libs standards de Java et C# apportent de plus à celle de C++ ?

    D'accord je ne maitrise pas tout mais ce qu'il ya avec C/C++ est largement suffisant....
    D'autant plus que le framework .NET est obèse et lourdingue plusieurs megas à installer pour faire des choses redondantes...
    Par exemple tu veux faire un jeu multijoueur en C/C++ quelques lignes de codes avec winsock et les sockets suffisent pas besoin de toute une usine à gaz...

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Par exemple tu veux faire un jeu multijoueur en C/C++ quelques lignes de codes avec winsock et les sockets suffisent pas besoin de toute une usine à gaz...

    Pourtant, les Socket en Java ou .NET sont très simples à utiliser.

    Rien que pour faire un minimum de réseau qui prend en compte des proxy, le transfert d'objet complexe, en C avec la bibliothèque standard, c'est tout de suite lourdingue.

    Rien que pour avoir l'adresse local, faut faire un truc comme :
    Code c : 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
     InetAddress InetAddress::getLocalAddress()
        {
            // Create the socket
            pMillie::InterfaceSocket Socket = socket(PF_INET, SOCK_DGRAM, 0);
            if (Socket == INVALID_SOCKET)
                throw SocketException("[Socket] Can't resolve name");
     
            // Build the host address (use a random port)
            sockaddr_in SockAddr;
            memset(SockAddr.sin_zero, 0, sizeof(SockAddr.sin_zero));
            SockAddr.sin_addr.s_addr = INADDR_LOOPBACK;
            SockAddr.sin_family      = AF_INET;
            SockAddr.sin_port        = htons(4567);
     
            // Connect the socket
            if (pMillie::iconnect(Socket, reinterpret_cast<sockaddr*>(&SockAddr), sizeof(SockAddr)) == -1)
            {
                pMillie::iclose(Socket);
                throw SocketException("[Socket] Can't resolve name");
            }
     
            // Get the local address of the socket connection
            socklen_t Size = sizeof(SockAddr);
            if (getsockname(Socket, reinterpret_cast<sockaddr*>(&SockAddr), &Size) == -1)
            {
                pMillie::iclose(Socket);
                throw SocketException("[Socket] Can't resolve name");
            }
     
            pMillie::iclose(Socket);
     
            return InetAddress(inet_ntoa(SockAddr.sin_addr));
     
        }

    Au lieu de :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InetAddress.getLocalHost().getHostName()

    Quitte à choisir, je préfère la deuxième version

    Alors s'il faut transférer des objets arborescents où je ne sais quoi. En java, on sérialise et c'est fini.



    J'ai fait une bibliothèque de traitement d'images (multithread et distribué (donc avec des serveurs de calcul)). J'ai écrit d'abord en C++. J'ai ensuite réecrit en Java. Ya pas à chier, j'ai mis largement moins de temps (même en prenant en compte le fait que j'avais déjà écrit du code semblable et fait une conception semblable)

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    Citation Envoyé par millie Voir le message
    Quitte à choisir, je préfère la deuxième version
    Oui je suis d'accord avec Java il suffit de 3 lignes de code contrairement à C++ ou c'est multiplié par 10.
    Mais je trouve qu'en Java on ne maitrise rien, tout est encapsulé

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/10/2012, 01h18
  2. Socket et Webcam en Java
    Par tnt2073 dans le forum Multimédia
    Réponses: 2
    Dernier message: 04/08/2006, 15h51
  3. SOCKET => lire a la "java"
    Par daedric dans le forum Réseau
    Réponses: 11
    Dernier message: 25/06/2006, 19h06
  4. Problême de Socket avec un applet java (RMI/policy)
    Par Vesperal dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/04/2006, 12h00
  5. SQL Server: Java Erreur Socket
    Par BenoitM dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2003, 16h32

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