Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con le socket su linux
Forum - C/C++ - Problema con le socket su linux

Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 15:22
Mercoledė, 01/07/2009
Ciao a tutti,
ho creato un semplice programma che fa da server. Ascolta sulla porta 5000.
Ecco il source:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <sys/socket.h>
  3. #include <arpa/inet.h>
  4. #include <netinet/in.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #define PORT 5000
  8. int main(int argc, char* argv[])
  9. {
  10.    int sck;
  11.    int sck2;
  12.    int peso;
  13.    int l;
  14.    char buff[30];
  15.    system("clear");
  16.    printf("Programma con le socket\n");
  17.    struct sockaddr_in sock_c;
  18.    struct sockaddr_in sock_s;
  19.    sock_s.sin_family = AF_INET;
  20.    sock_s.sin_port = htons(PORT);      
  21.    sock_s.sin_addr.s_addr = 0;
  22.    sck = socket(AF_INET,SOCK_STREAM,0);
  23.    bind(sck,(struct sockaddr *)&sock_s,sizeof(struct sockaddr));
  24.    if (l = listen(sck,10) < 0)
  25.    {
  26.         printf("Impossibile ascoltare le connesioni\n");
  27.    }
  28.    else
  29.    {
  30.        printf("Porta= %d",PORT);
  31.        printf("\n");
  32.        printf("In attesa di una connessione...\n");
  33.        while(1)
  34.             {
  35.                  peso = sizeof(struct sockaddr_in);
  36.                  if (sck2 = accept(sck,(struct sockaddr *)&sock_c,&peso) < 0)
  37.                  {
  38.                  }
  39.                  else
  40.                  {
  41.                        printf("Connesso\n");
  42.                        
  43.                  }
  44.             }        
  45.    }
  46.  
  47. }


Una volta compilato, lancio il server, apro telnet e mi connetto sulla porta 5000 cosė:
Codice sorgente - presumibilmente Plain Text

  1. telnet 127.0.0.1 5000


In effetti il mio server risponde "Connesso" ma non riesco ad inviare dati al client. Come devo fare ad inviarli una volta effettuata la connessione? Chiramente i dati devo esere visualizzati dal client. So che devo farlo col comando "send" ma nn riesco. Ho provato in tutti i modi:d:d
Potreste essere cosė gentili da modificarmi il codice in modo che quando il client si connette esso riceva un messaggio con scritto "ciao" dal server? :hail:

Ultima modifica effettuata da luca94 il 01/07/2009 alle 15:26
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 15:57
Mercoledė, 01/07/2009
dai un'occhiata a questo articolo sul mio sito: http://www.oscene.net/it/programmazione/c/come-programmare ...

spero che ti sia d'aiuto ;)

PM Quote