Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [c#] Connessione attraverso socket

    Salve a tutti, ho scritto questo post perché ho molte difficoltà a creare una (in giro la chiamano semplicissima) chat che utilizza un server e un client collegati via internet utilizzando i socket. Fino ad ora sono riuscito ad imparare questo tipo di programma solo con java. Ora vorrei programmare sempre un client e un server in c#. Spiego il procedimento che ho fatto in java, sperando che possa fare lo stesso con c#.

    premetto:
    a) non vado in una scuola dove si impara anche a programmare, quindi le mie conoscenze discrete e non altissime, anche perchè solo da qualche mese sto iniziando a programmare con linguaggi simili a java, c# ecc.

    b) potrei non utilizzare un linguaggio corretto.

    server:

    1) dichiaro una variabile ServerSocket che chiamerò server e gli do come parametro una porta, es. 6000

    2) creo un Socket client, infine attendo che un client si connetta (utilizzando accept() ; )

    3) prelevo da client l'OutputStream e lo "sovrascrivo" con PrintStream.(questo per inviare messaggi)

    4) per quanto riguarda la lettura utilizzo un BufferReader e l'InputStream

    Il client è più o meno la stessa cosa quindi evito di scriverlo

    Ora, ho scritto questo perché di sicuro questo tipo di processo avrà un nome che io non conosco e volevo sapere se esiste un processo simile in c#.

    Quindi...

    Posso programmare il complesso utilizzando c# ma con processi simili a quello descritto sopra?

    Quali sono i "sostituti" di InputStream, OutputStream, PrintStream, BufferedReader che posso utilizzare con c#??

    Grazie per l'attenzione

    cordiali saluti

    g.b99pm10
    tutto si può fare, bisogna solo volerlo
    http://italybrain.altervista.org/

  2. #2
    Ciao.
    Quello che cerchi rimane sotto il namespace System.Net.Sockets.
    Prova a dare un'occhiata alle classi sotto questo namespace.
    Ciao

  3. #3
    grazie, ho risolto questo problema, però c'è un piccolo dettaglio nel c# che non mi è chiaro(non ho aperto una nuova discussione in quanto è, credo una cosa sciocca, molto semplice, ma che non ho trovato in rete).

    Nel mio progetto ho trovato una difficoltà a passare per parametro il valore di una variabile ad un thread. Mi spiego meglio.

    Classe1: dichiaro una variabile(per semplicità diremo che è una string) string parola;
    nella Classe2, il thread necessita un parametro string, che io voglio passare da
    Classe1(il parametro sarà la variabile parola). Quindi in Classe1 faccio partire il thread
    in questo modo
    codice:
              Classe2 cl2 = new Classe2();
        Thread t = new Thread(cl2.cambia); // qui come faccio a passare per parametro parola??
              t.Start()
    Classe2: ha un metodo, ovvero
    codice:
    class Classe2
    {
          string ciao;
          public void cambia (string par)
        {
               this.ciao = par;
               Console.Write(ciao);    
        }
    }
    Come faccio a passare a public void cambio il suo parametro da Classe1?

    Grazie per l'attenzione




    p.s E' possibile che abbia fatto qualche errore di battitura, è che lo ho scritto direttamente qui e sto ancora imparando quindi... se non sono stato chiaro dite pure, cercherò di scrivere meglio.
    tutto si può fare, bisogna solo volerlo
    http://italybrain.altervista.org/

  4. #4
    codice:
    t.Start("Ciao")

  5. #5
    non funziona, perchè mi dà errore qui:

    codice:
     Thread t = new Thread(cl2.cambia);
    Gli errori sono:

    1: Errore 1 La corrispondenza migliore del metodo di overload per 'System.Threading.Thread.Thread(System.Threading.P arameterizedThreadStart)' presenta alcuni argomenti non validi

    2: Errore 2 Argomento 1: impossibile convertire da 'gruppo di metodi' a 'System.Threading.ParameterizedThreadStart'


    ho provato anche a mettere

    codice:
     Thread t = new Thread(cl2.cambia(parola));
    ma mi dà un altro errore...
    tutto si può fare, bisogna solo volerlo
    http://italybrain.altervista.org/

  6. #6
    La firma del metodo "cambia" può contenere solo parametri di tipo object

    codice:
    public void cambia (object par)
    Ciao

  7. #7
    object? ma a me serve una string, come posso fare?

    grazie per l'attenzione

    ciao
    tutto si può fare, bisogna solo volerlo
    http://italybrain.altervista.org/

  8. #8
    In .NET tutto è "object" ... anche il tipo String è un'oggetto.
    Non devi fare altro che fare la conversione da object a string.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.