Close
Faqja 0 prej 2 FillimFillim 12 FunditFundit
Duke shfaqur rezultatin -9 deri 0 prej 12
  1. #1
    i/e regjistruar
    Anėtarėsuar
    06-09-2004
    Postime
    253

    echo server me socket

    pershendetje
    ndonje vend ku ka material per temen e meposhtme:

    Te realizohet me ane te mekanizmit socket, programi klient dhe ai server te cilet realizojne nje echo server.

  2. #2
    i/e regjistruar
    Anėtarėsuar
    11-10-2004
    Postime
    39
    Tutoriali i Java ka plot informacion per sockets dhe po ashtu dy programet qe kerkon ti:
    http://java.sun.com/docs/books/tutor...ets/index.html

  3. #3
    mos e luaj; I DEBUAR! Maska e qoska
    Anėtarėsuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    po deshe ke tre volume. te TCP/IP implementation nga nje nga anetaret e grupit qe krijuan kodin e TCP/IP per 4.3 BSD NET-2, Richard Stevens, dhe qe e perdorin gati shumica e sistemeve perfshire windowsin.
    Volumi i pare i ketij libri ka kete qe don ti dhe te sqaruar por ne gjuhen C, por i ka te shpjeguar dhe algoritmet e perdorura. Keto volume i gjen me emule tek serveri RAZORBACK2.
    Kjo eshte nqs ke ndermend te programosh per rrjete me e mira.
    Nqs do te besh kot sa per gallate ne MICROSOFT VISUAL STUDIO tek cd e MSDN ke shembuj si te perdoresh winsock qe eshte nje thjeshtim i librarise origjinale socket.
    Ne visual basic gjithe kjo qe kerkon ti bhet me serverin ne 1 procedure jo me shume se 20 rrjeshta dhe klienti po ashtu.
    Nqs do ndihme hade me tako se sbesoj te kem kohe qe ta hedh si kod.

  4. #4
    i/e regjistruar
    Anėtarėsuar
    06-09-2004
    Postime
    253

    Post

    ermalo gjeta keto kode per detyren, nqs ke kohe hidhi nje sy.
    me te pyt a di si kompilohen keto ne BSD,dhe nqs ka ndonje gje qe sshkon ta regullosh

    8.1. client.c

    Kodi PHP:

     
    #include <sys/types.h>
     #include <sys/socket.h>
     #include <sys/time.h>
     #include <netinet/in.h>
     #include <errno.h>
     #include <ctype.h>
     #include <netdb.h>
     #include <stdio.h>
     #include <string.h>

     
    main(argcargv)  
     
    int argc
     
    char *argv[]; 
     { 
          
    struct hostent *hostp
          
    struct servent *servp
          
    struct sockaddr_in server
          
    int sock
          static 
    struct timeval timeout = { 5};   /* five seconds */ 
          
    fd_set rmaskxmaskmask
          
    char buf[BUFSIZ]; 
          
    int nfoundbytesread;

          if (
    argc != 3) { 
               (
    voidfprintf(stderr,"usage: %s service host\n",argv[0]); 
               exit(
    1); 
          } 

          if ((
    sock socket(AF_INETSOCK_STREAMIPPROTO_TCP)) < 0) { 
               
    perror("socket"); 
               exit(
    1); 
          } 

          if (
    isdigit(argv[1][0])) { 
               static 
    struct servent s
               
    servp = &s
               
    s.s_port htons((u_short)atoi(argv[1])); 
          } else if ((
    servp getservbyname(argv[1], "tcp")) == 0) { 
               
    fprintf(stderr,"%s: unknown service\n",argv[1]); 
               exit(
    1);
          } 

          if ((
    hostp gethostbyname(argv[2])) == 0) { 
               
    fprintf(stderr,"%s: unknown host\n",argv[2]); 
               exit(
    1); 
          } 
          
    memset((void *) &server0sizeof server);


          
    server.sin_family AF_INET
          
    memcpy((void *) &server.sin_addrhostp->h_addrhostp->h_length); 
          
    server.sin_port servp->s_port
          if (
    connect(sock, (struct sockaddr *) &serversizeof server) < 0) { 
               (
    voidclose(sock); 
               
    perror("connect");  
               exit(
    1); 
          } 

          
    FD_ZERO(&mask);  
          
    FD_SET(sock, &mask); 
          
    FD_SET(fileno(stdin), &mask); 

          for (;;) { 
               
    rmask mask
               
    nfound select(FD_SETSIZE, &rmask, (fd_set *)0, (fd_set *)0, &timeout); 
               if (
    nfound 0) { 
                    if (
    errno == EINTR) { 
                         
    printf("interrupted system call\n"); 
                         continue; 
                    } 
                    
    /* something is very wrong! */ 
                    
    perror("select"); 
                    exit(
    1); 
               } 

               if (
    nfound == 0) { 
                    
    /* timer expired */ 
                    
    printf("Please type something!\n"); 
                    continue; 
               } 

               if (
    FD_ISSET(fileno(stdin), &rmask)) { 
                    
    /* data from keyboard */  
                    
    if (!fgets(bufsizeof bufstdin)) {  
                         if (
    ferror(stdin)) { 
                              
    perror("stdin"); 
                              exit(
    1); 
                         } 
                         exit(
    0); 
                    } 
                    if (
    write(sockbufstrlen(buf)) < 0) { 
                         
    perror("write"); 
                         exit(
    1); 
                    } 
               } 

               if (
    FD_ISSET(sock,&rmask)) { 
                    
    /* data from network */ 
                    
    bytesread read(sockbufsizeof buf); 
                    
    buf[bytesread] = '\0'
                    
    printf("%s: got %d bytes: %s\n"argv[0], bytesreadbuf); 
               } 
          } 
     } 
    /* main - client.c */

    8.2server.

     
    #include <sys/types.h>
     #include <sys/socket.h>
     #include <sys/time.h>
     #include <netinet/in.h>
     #include <netdb.h>
     #include <arpa/inet.h>
     #include <ctype.h >
     #include <errno.h>
     #include <stdio.h>

     
    main(argcargv
     
    int argc
     
    char *argv[]; 
     { 
          
    struct servent *servp
          
    struct sockaddr_in serverremote
          
    int request_socknew_sock
          
    int nfoundfdmaxfdbytesreadaddrlen
          
    fd_set rmaskmask
          static 
    struct timeval timeout = { 0500000 }; /* one half second */ 
          
    char buf[BUFSIZ];

          if (
    argc != 2) { 
               (
    voidfprintf(stderr,"usage: %s service\n",argv[0]); 
               exit(
    1); 
          } 

          if ((
    request_sock socket(AF_INETSOCK_STREAMIPPROTO_TCP)) < 0) { 
               
    perror("socket"); 
               exit(
    1);
          } 

          if (
    isdigit(argv[1][0])) { 
               static 
    struct servent s
               
    servp = &s;  
               
    s.s_port htons((u_short)atoi(argv[1])); 
          } else if ((
    servp getservbyname(argv[1], "tcp")) == 0) { 
               
    fprintf(stderr,"%s: unknown service\n"); 
               exit(
    1); 
          } 
          
    memset((void *) &serversizeof server); 
          
    server.sin_family AF_INET
          
    server.sin_addr.s_addr INADDR_ANY
          
    server.sin_port servp->s_port
          if (
    bind(request_sock, (struct sockaddr *) &serversizeof server) < 0) { 
               
    perror("bind"); 
               exit(
    1); 
          } 

          if (
    listen(request_sockSOMAXCONN) < 0) { 
               
    perror("listen"); 
               exit(
    1); 
          } 

          
    FD_ZERO(&mask); 
          
    FD_SET(request_sock, &mask); 
          
    maxfd request_sock
          for (;;) { 
               
    rmask mask;  
               
    nfound select(maxfd 1, &rmask, (fd_set *)0, (fd_set *)0, &timeout); 
               if (
    nfound 0) { 
                    if (
    errno == EINTR) { 
                         
    printf("interrupted system call\n"); 
                         continue;
                    } 
                    
    /* something is very wrong! */ 
                    
    perror("select"); 
                    exit(
    1); 
               } 

               if (
    nfound == 0) { 
                    
    /* timeout */ 
                    
    printf("."); 
                    
    fflush(stdout); 
                    continue; 
               } 

               if (
    FD_ISSET(request_sock, &rmask)) { 
                    
    /* a new connection is available on the connetion socket */
                    
    addrlen sizeof(remote); 
                    
    new_sock accept(request_sock, (struct sockaddr *)&remote, &addrlen); 
                    if (
    new_sock 0) { 
                         
    perror("accept");  
                         exit(
    1); 
                     } 

                     
    printf("connection from host %s, port %d, socket %d\n"
                          
    inet_ntoa(remote.sin_addr), ntohs(remote.sin_port), new_sock); 
                     
    FD_SET(new_sock, &mask);  
                     if (
    new_sock maxfdmaxfd new_sock
                     
    FD_CLR(request_sock, &rmask); 
               } 

               for (
    fd 0fd <= maxfd fd++) { 
                    
    /* look for other sockets that have data available */ 
                    
    if (FD_ISSET(fd, &rmask)) { 
                         
    /* process the data */ 
                         
    bytesread read(fdbufsizeof buf 1);
                         if (
    bytesread 0) { 
                              
    perror("read");  
                              
    /* fall through */ 
                         


                         if (
    bytesread <= 0) { 
                              
    printf("server: end of file on %d\n",fd); 
                              
    FD_CLR(fd, &mask); 
                              if (
    close(fd)) perror("close"); 
                              continue; 
                        } 

                        
    buf[bytesread] = '\0'
                        
    printf("%s: %d bytes from %d: %s\n"argv[0], bytesreadfdbuf); 
                        
    /* echo it back */ 
                        
    if (write(fdbufbytesread) != bytesreadperror("echo"); 
                    } 
               } 
          } 
     } 
    /* main - server.c */ 
    Ndryshuar pėr herė tė fundit nga edspace : 26-02-2005 mė 14:00

  5. #5
    mos e luaj; I DEBUAR! Maska e qoska
    Anėtarėsuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    ne rregull e ke vetem se kete funksionin
    memset((void *) &server, sizeof server); tek server.c rreshti i 41 a 42
    shkruaje si
    bzero( (void*)&server, sizeof(server) );
    dhe je ne rregull fare cdo gje do te te kompilohet normalisht.
    pasi memset do tre argumente kurse bzero qe eshte thjesht nje wrapper i memset eshte me i thjeshtuar.
    Hajt me te mira edhe mos ma permend shume emrin verdalle ne forum prandaj perdorin mileti nikun

  6. #6
    mos e luaj; I DEBUAR! Maska e qoska
    Anėtarėsuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    ketu ke dy skedaret e bashkangjitur te rregulluar. se ne fillim e pashe me syrin e pare por per ne bsd te mungonin disa #includes sepse me cpashe eshte program i vejter dhe jo i shkruajtur ne ANSI C dhe te duhet te ndryshoje deklarimin e funksionit main.

    si dhe ate funksionin qe te thashe me pare tek postimi i mesiperm.

    per ta kompiluar nje program qe te te tregoje dhe "warning" per nje program
    me gcc bej komanden (gcc -c -Wall "emrin e filet".c) per te kompiluar vetem ose me mire per te pare a ke ndonje gabim apo jo, kurse per te nxjerre nje program te ekzekutueshem perdorr (gcc -o "emrin e daljes se programit nqs e do te ndryshem nga z.out" "emrin e filet".c )
    konkretisht per kete rast provo
    gcc -c -Wall client.c
    gcc -c -Wall server.c
    nqs ske gabime vazhdo me
    gcc -o server server.c
    gcc -o client client.c

    per ti ekzekutuar
    ./server 64000 "numri i portes ku degjon serveri"
    dhe pastaj
    ./client 64000 127.0.0.1
    qe klienti te lidhet.
    Do te duhen dy terminale te vecanta pasi serveri nxjerr disa pika ne standart output gjate kohes qe eshte aktiv ose te duhet te ridrejtosh standart outputin e serverit ne bash me 1>&/dev/null ok
    Tung
    Skedarėt e Bashkėngjitur Skedarėt e Bashkėngjitur

  7. #7
    i/e regjistruar
    Anėtarėsuar
    06-09-2004
    Postime
    253
    OK
    po ndonje nga keto dy te tjerat mund te perdor?, shifi nje here

    shpresoj mos vije te forumi ndonje nga klasa se po me kopjon detyren
    Skedarėt e Bashkėngjitur Skedarėt e Bashkėngjitur

  8. #8
    mos e luaj; I DEBUAR! Maska e qoska
    Anėtarėsuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    hajt marrsh nje dhjete gati e ke
    TUNG
    Skedarėt e Bashkėngjitur Skedarėt e Bashkėngjitur

  9. #9
    i/e regjistruar
    Anėtarėsuar
    06-09-2004
    Postime
    253
    flm per noten, une kenaqen edhe me me pak

    Qoske, serveri dhe klienti ishin te kompilueshem, i provova ne Xandros Linux por nuk ekzekutoheshin sipas :
    ./server 64000
    ./client 64000 127.0.0.1
    ne dy terminale te vecanta,duke pasur dhe privilegj administratori.
    Kur ekzekutohej, klienti nxirrte kete gabim:
    Network unreachable.
    Si tja bej tani se nuk jame dhe shume i holle per kete pune?

  10. #10
    mos e luaj; I DEBUAR! Maska e qoska
    Anėtarėsuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    epo shiko mos ke ndonje firewall te aktivizuar dhe liro nje komunikimin per localhost ose provo te vesh localhost ne vend te 127.0.0.1
    ndryshe provo me ip qe i ke vene kompjuterit ne vend te 127.0.0.1
    po ashtu me thuaj qe te gjejme nje menyre tjeter

Faqja 0 prej 2 FillimFillim 12 FunditFundit

Tema tė Ngjashme

  1. Vetoja e Rusisė – lėvizje shumė e rrezikshme, thotė Server
    Nga no name nė forumin Problemet ndėrkombėtare
    Pėrgjigje: 6
    Postimi i Fundit: 22-04-2007, 14:04
  2. Serverėt e Counter Strike, pėr tė lozur online.
    Nga Davius nė forumin Lojra nė kompjuter
    Pėrgjigje: 1
    Postimi i Fundit: 04-05-2005, 12:59
  3. Loja me letra Xing ne Java, server ne C
    Nga lampkin nė forumin Arti i programimit
    Pėrgjigje: 5
    Postimi i Fundit: 14-04-2005, 21:25

Regullat e Postimit

  • Ju nuk mund tė hapni tema tė reja.
  • Ju nuk mund tė postoni nė tema.
  • Ju nuk mund tė bashkėngjitni skedarė.
  • Ju nuk mund tė ndryshoni postimet tuaja.
  •