Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Capire i Socket

  1. #1

    Capire i Socket

    Devo dire che una delle mie grandi lacune in Perl e l'utilizzo deo Socket
    Infatti non ho ancora ben capito il loro meccanismo client/server (per me un meccanismo ancora astratto)

    chiedo lumi a voi!

    Ad esempio quale sarebbe la strada da intraprendere se volessi programmare una chat in perl (non browser) con i socket di tipo point to point?

    Grazie

  2. #2
    L'architettua cliente/server detta in poche parole e questa:

    server: "entita" che si oppupa di ricevere richieste e dare risposte!
    client: "entita" che fa le richieste al server ed aspetta le risposte!


    Per realizzare una chat di tipo client/server:

    server: si occupa di accettare le connessioni da parte dei client, a connessione avvenuta dovra gestire l'invio e la ricezione di messaggi.

    client: deve poter effettuare una connessione ad un server, inviare richieste al server ed accettare le risposte.

    Un altr'architettuta per una chat p-to-p valida solo per due utenti e creare contemporatemente un client capare anche da fungere da server, cioe puoi accettare la connessione di un altro client, e gestirla, e a suo tempo connettersi ad un altro client-server e dialogarci!

    Se vuoi che sia piu' preciso, o piu' chiaro (penso di si!! ) batti un colpO!

  3. #3
    Originariamente inviato da FreeManX
    Un altr'architettuta per una chat p-to-p valida solo per due utenti e creare contemporatemente un client capare anche da fungere da server, cioe puoi accettare la connessione di un altro client, e gestirla, e a suo tempo connettersi ad un altro client-server e dialogarci!
    ne consegue che dovrò fare uso dei tread?

    In questo caso mi serve una delucidazione anche sui tread!

    Per il resto sei stato abbstanza chiaro...grazie

  4. #4
    Questo è un pò di codice di esempio che ho fatto leggendo in giro un pò in materia di Socket e Thread

    codice:
    use strict;
    use warnings;
    use IO::Socket::INET;
    use Thread;
    
    $t1 = Thread->new( \&client);
    $t2 = Thread->new( \&server);
    
    sub client {
    
      my ($socket,$answer);
    
      $socket = IO::Socket::INET->new("127.0.0.1:2000")
        or die "Couldn't connect to port 2000 of 127.0.0.1 : $!";
    
      # send something over the socket,
      print $socket "Why don't you call me anymore?\n";
    
      # read the remote answer,
      $answer = <$socket>;
    
      # and terminate the connection when we're done.
      close($socket);
    
    }
    
    sub server {
    
      my ($server,$client);
    
      $server = IO::Socket::INET->new(LocalPort => 2000,
                                    Type      => SOCK_STREAM,
                                    Reuse     => 1,
                                    Listen    => 10 )   # or SOMAXCONN
        or die "Couldn't be a tcp server on port 2000: $!\n";
    
      while ($client = $server->accept()) {
          # $client is the new connection
      }
    
    close($server);
    
    }
    potrei connettermi a me stesso? (127.0.0.1) e su che porta?
    so che dovrei mettere un while(1) ma non so dove...

    instanto, secondo voi come prima bozza ci può stare? voglio dire se il concetto è quello giusto...

    grazie

  5. #5
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.