Socket C/C++

Fermé
Framboos Messages postés 85 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 27 septembre 2013 - 22 févr. 2010 à 20:44
Bonjour,

J'aimerais savoir comment on règle une socket pour pourvoir se connecter dessus à distance depuis internet.

Le serveur:
cout << "Lancement de notre Socket Serveur" << endl;
    WSADATA WSAData;
    SOCKET sock;
    SOCKET csock;
    SOCKADDR_IN sin;
    SOCKADDR_IN csin;
	char buffer[255];
	// initialisation de la socket   
	WSAStartup(MAKEWORD(2,0), &WSAData);
    sock = socket(AF_INET, SOCK_STREAM, 0);
	sin.sin_addr.s_addr = INADDR_ANY;
		
    sin.sin_family = AF_INET;
    sin.sin_port = htons(13000);
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    listen(sock, 0);
    while(1) /* Boucle infinie. Exercice : améliorez ce code. */
    {
        int sinsize = sizeof(csin);
        cout << "Attente d'une connexion Client..." << endl;
		if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
        {
			cout << "Votre message : ";
            cin.get(buffer,255);
			cout << endl;
			cout << "Message Envoye..." << endl;
			send(csock, buffer, sizeof(buffer), 0);
			
			recv(csock, buffer, sizeof(buffer), 0);
			cout << buffer << endl;
            closesocket(csock);
        }
    }
    /* On devrait faire closesocket(sock); puis WSACleanup(); mais puisqu'on a entré une boucle infinie ... */
    return 0;



Le client:

int main()
{
    WSADATA WSAData;
    SOCKET sock;
    SOCKADDR_IN sin;
    char buffer[255];
    WSAStartup(MAKEWORD(2,0), &WSAData);
    /* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
    sock = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_addr.s_addr = inet_addr("88.192.62.166");
    sin.sin_family = AF_INET;
    sin.sin_port = htons(13000);//6667
   
	connect(sock, (SOCKADDR *)&sin, sizeof(sin));
   
	recv(sock, buffer, sizeof(buffer), 0);
	
	// on ecrit le buffer dans la console
	cout << buffer << endl;

	cout << "Reponse : ";
    cin.get(buffer,255);
	cout << endl;
	cout << "Message Envoye..." << endl;
	send(sock, buffer, sizeof(buffer), 0);
	//send(sock, "Oui\r\n\0", 6, 0);

	closesocket(sock);
    WSACleanup();
    return 0;
}