C# socket tcp

giovedì 04 settembre 2008 - 15.24

and87 Profilo | Newbie

salve vorrei sapere come creare 2 socket tcp. per ora ho stabilito la connessione ma il problema persiste nel rivecere il dato da parte del server.
questo è il codice gestito nel client
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Questo invece nel server.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questa funzione viene richiamata nel main del server.
Come faccio a ricevere cioè che mi è stato inviato dal client?

Grazie

Enne Profilo | Junior Member

Sinceramente non capisco molte cose su quello che hai fatto, esempio:

//nel client
int x = 1; byte[] byData = System.Text.Encoding.ASCII.GetBytes(Convert.ToString(x));

//nel server
string portStr = "1234"; int port = System.Convert.ToInt32(portStr);

Che senso hanno queste conversioni? Devi sapere che le conversioni influiscono sulle prestazioni di un'applicazione quindi è sempre meglio usarle solo quando ne hai veramente bisogno.
Nel tuo caso quindi:

//nel client
m_socListener.Send(Encoding.ASCII.GetBytes("Prova"));

//nel server
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 1234); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

Ovviamente quello che hai postato è un codice molto grezzo e dovresti sistemare un bel pò di cose, ma ti faccio un'esempio al volo per leggere i dati ricevuti dal client:

socket.Bind(ip); socket.Listen(10); Console.WriteLine("In attesa di un client.."); Socket client = socket.Accept(); IPEndPoint clientep =(IPEndPoint)client.RemoteEndPoint; Console.WriteLine("Connesso con {0} alla porta {1}",clientep.Address, clientep.Port); string welcome = "Benvenuto"; byte[] data = new byte[1024]; data = Encoding.ASCII.GetBytes(welcome); client.Send(data, data.Length,SocketFlags.None); while(true) { data = new byte[1024]; int receivedDataLength = client.Receive(data); Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength)); client.Send(data, receivedDataLength, SocketFlags.None); } Console.WriteLine("Disconnesso da {0}",clientep.Address); client.Close(); socket.Close();

Non sò che tipo di applicazione stai sviluppando, ma valuta bene anche la possibilità di utilizzare il Remoting.

Saluti,
Rocco Verrastro
.NET Programmer - Web Developer
http://devjoker.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5