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# / VB.NET - [C#] Send Receive Messaggi
Forum - C# / VB.NET - [C#] Send Receive Messaggi

Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 16:06
Venerdì, 09/09/2011
Ragazzi nel creare una chat client server sono arrivato alla parte della chat.. ho creato il Send e Receive che sono rispettivamente

Send:
Codice sorgente - presumibilmente C#

  1. public void InviaATutti(string MESSAGGIO)
  2.         {
  3.             foreach (Socket s in Sockets)
  4.             {
  5.                 s.Send(ASCIIEncoding.ASCII.GetBytes(MESSAGGIO));
  6.             }
  7.         }



Receive:
Codice sorgente - presumibilmente C++

  1. public void RiceviMessaggi()
  2.         {
  3.             TcpClient Connector = new TcpClient();
  4.             int port = int.Parse(textBox2.Text);
  5.             IPAddress ipAdd = IPAddress.Parse(textBox1.Text);
  6.             EndPoint ep = new IPEndPoint(ipAdd, port);
  7.             Socket s = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.IP);
  8.             s.Connect(ep);
  9.             if (Connector.Available > 0)
  10.             {
  11.                 byte[] msg = new byte[Connector.Available];
  12.                 s.Receive(msg);
  13.                 string testo = ASCIIEncoding.ASCII.GetString(msg);
  14.                 listBox1.Items.Add(testo);
  15.                 s.Close();
  16.             }
  17.             else
  18.             {
  19.                 s.Close();
  20.             }
  21.         }



Ok, ma il messaggio sul client non appare sapreste dirmi dove ho sbagliato?

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 18:11
Venerdì, 09/09/2011
L'if è insensato:
Connector è un TcpClient che instanzi e lasci a "morire" nella prima riga di codice, mentre s è un socket che effettivamente si connette, quindi perché il controllo avviene su Connector.Available? Non potranno mai esserci dati in arrivo se non lo fai connettere.

Comunque il codice è piuttosto bruttino, usa i metodi asincroni BeginXXX delle classi TcpClient e NetworkStream.

[ot]Tempo fa ho creato una libreria open source per la gestione di un server multi-connessione molto semplice da usare, se vuoi te la passo :yup:[/ot]

Ultima modifica effettuata da il 09/09/2011 alle 18:13
PM
Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 10:00
Sabato, 10/09/2011
si mi sarebbe utile la dll se potresti passarmela..

PM