• STATISTIQUES
  • Il y a eu un total de 0 membres et 45186 visiteurs sur le site dans les dernières 24h pour un total de 45 186 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Programme Serveur/Client
10-10-2012, 15h28 (Modification du message : 19-11-2012, 19h25 par InstinctHack.)
Message : #1
Creepy_p0ney Hors ligne
chef des poneys voodoo
*



Messages : 146
Sujets : 9
Points: 24
Inscription : Dec 2011
[C] Programme Serveur/Client
Salut,j'ai donc réusi à programmer mon serveur multi clients, mais le problème se pose pour le client car en effet, mon clients fonctionne quand je me connecte au serveur (qui est sur mon linux) avec le client(qui est sur mon linux) le truc c'est que quand je me connecte avec mon client sous win ça ne fonctionne pas!! (il envoie les données mais ne les reçoit pas).

voici le code de mon srv
Code :
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
typedef struct
{
   int sock;
   char name[64];
}Client;
int main(){
    
    
    int reals;
    int sin_size;
    int sockfd;
    struct sockaddr_in their_addr[5];
    int i=0;
    int ret=0;
    char buf[64];
    char msg[64];
    int k=0;
    int m=0;
    int max=0;
    Client clients[5];
    fd_set fd;
    struct sockaddr *addr;
    char *log="tim";
    struct sockaddr_in my_addr;
    pid_t pid;
    if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){
        perror("socket");
        exit(1);
    }
    my_addr.sin_family=AF_INET;
    my_addr.sin_port=htons(2300);
    my_addr.sin_addr.s_addr=INADDR_ANY;
    
    if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr_in))<0){
        perror("bind");
        exit(1);
    }
    listen(sockfd,5);
    printf("attente d'un client");
    sin_size = sizeof(struct sockaddr_in);
    printf("%d\n",i);
    while(1){
        int l=0;
        int n=0;
        FD_ZERO(&fd);
        FD_SET(sockfd,&fd);
        for(l=0;l<i;l++){
            FD_SET(clients[l].sock,&fd);
        }
        printf("nous y sommes3\n");
        for(n=0;n<i;n++){
            if(max<clients[n].sock){
                max=clients[n].sock;
            }
        }
        if(max<sockfd)
            max=sockfd;
        printf("%d",max);
        if((ret=select(max+1,&fd,NULL,NULL,NULL))==-1){
            perror("select");
            exit(1);
        }
        printf("nous y sommes2\n");
        if(FD_ISSET(sockfd,&fd)){
            printf("here we are\n");
            sin_size=sizeof(struct sockaddr_in);
            clients[i].sock=accept(sockfd,(struct sockaddr *)&their_addr[i],&sin_size);
            send(clients[i].sock,"login :",64,0);
            reals=recv(clients[i].sock,buf,64,0);
            buf[reals]='\0';
            strncpy(clients[i].name, buf, 64 - 1);            
            i++;

        }
        else if(ret==0){
            printf("problem?");
        }
        else{
            printf("here we are9");
            for(k=0;k<i;k++){
                if(FD_ISSET(clients[k].sock,&fd)){
                    int j=0;
                    printf("here we are5\n");
                    reals=recv(clients[k].sock,buf,64,0);
                    printf("here we are6\n");
                    if(reals==0){
                        close(clients[k].sock);
                        i--;
                    }
                    else{
                        buf[reals]='\0';
                        printf("%s",buf);
                        printf("here we are7\n");
                        strncpy(msg,clients[k].name,64-1);
                        strncat(msg,buf,64-strlen(msg)-1);
                        printf("here we are8\n");
                        for(j=0;j<i;j++){
                            send(clients[j].sock,msg,64,0);
                        }
                    }
                }
            }
        }

    }        
        


    
}

celui de mon client win :
Code :
#if defined (WIN32)
    #include <winsock2.h>

#elif defined (linux)
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>

#endif

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>



int main(){
#if defined (WIN32)
        WSADATA WSAData;
        int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
    #else
        int erreur = 0;
    #endif

    struct sockaddr_in my_addr;
    int sockfd;
    
    char buffer[64];
    char *buf;
    int reals=0;
    fd_set fd;
    sockfd=socket(AF_INET,SOCK_STREAM,0);

    my_addr.sin_family=AF_INET;
    my_addr.sin_port=htons(2300);
    my_addr.sin_addr.s_addr=inet_addr("192.168.1.12");
    connect(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr));

    while(1){

        FD_ZERO(&fd);
        FD_SET(STDIN_FILENO, &fd);
        FD_SET(sockfd,&fd);
        select(sockfd+1,&fd,NULL,NULL,NULL);

         if(FD_ISSET(STDIN_FILENO, &fd))
              {

                 fgets(buffer, 64 - 1, stdin);
                 {
                        char *p = NULL;
                        p = strstr(buffer, "\n");
                       if(p != NULL)
                    {
                               *p = 0;
                        }
                        else
                           {
                              /* fclean */
                                   buffer[64- 1] = 0;
                            }
                }
                send(sockfd,buffer,64,0);
                 }
            else {
                reals=recv(sockfd,buf,64,0);
                if(reals==0){
                    printf("mother fucking problem!!!");
                }
                puts(buf);
            }
        }




    #if defined (WIN32)
        WSACleanup();
    #endif

    return EXIT_SUCCESS;



}
Penser que coder est coder explique-t-il la recursion ?
http://p0neyland.wordpress.com/
+1 (0) -1 (0) Répondre


Messages dans ce sujet
[C] Programme Serveur/Client - par Creepy_p0ney - 10-10-2012, 15h28

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [C] serveur irc (non terminé) fr0g 0 101 21-05-2014, 22h27
Dernier message: fr0g
  [C-AIDE] Fuzzer De Programme sakiir 2 214 16-05-2013, 11h21
Dernier message: Sh4dows
  [C] Un mini-serveur HTTP -Moloch- 11 639 19-04-2013, 14h22
Dernier message: notfound
  [C] Programme de hashage Junky 1 257 23-03-2013, 12h11
Dernier message: Junky
  [C] Socket Client-Serveur -> Write() + Read() sakiir 7 447 18-03-2013, 07h19
Dernier message: sakiir
  [C] Serveur multi-clients Creepy_p0ney 12 603 09-10-2012, 19h28
Dernier message: Creepy_p0ney

Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut