salve ragazzi vi posto un codice che ho creato girando 1 pò sulla rete ... in pratica il client manda al server 1 messaggio e poi chiude la connessione ora apportando qualche modifica vorrei che si potesse inviare + di un messaggio solo che quando sul client analizzo la stringa per dirgli se è = a "Close" chiudi la connessione non esegue un pezzo di codice ....
SERVER
codice:
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; namespace Chat1 { class ServerComunication { static void Main(string[] args) { try { IPAddress ipAd = IPAddress.Parse("192.168.1.6"); // mettere l'indirizzo ip a cui il client di collegherà ........ TcpListener myList = new TcpListener(ipAd, 16333); myList.Start(); Console.WriteLine("Server in ascolto alla porta : 16333..."); //Console.WriteLine("The local End point is :" + myList.LocalEndpoint); //informazioni sul server ..... Console.WriteLine("Aspettando una connessione .......\n"); Socket s = myList.AcceptSocket(); //accetta la connessione Console.WriteLine("Connessione accettata da: " + s.RemoteEndPoint); Comunica(s); if (Comunica(s) == "Close") { s.Close(); myList.Stop(); } else { //myList.Start(); Comunica(s); } } catch (Exception e) { Console.WriteLine("Error..... " + e.StackTrace); } } static string Comunica(Socket s) { byte[] b = new byte[100]; int lunghezzaStringa = s.Receive(b); Console.WriteLine("Ricevuto ...\n"); string stringaRicezione = ""; for (int i = 0; i < lunghezzaStringa; i++) { Console.Write(Convert.ToChar(b[i])); stringaRicezione += Convert.ToChar(b[i]); } //ASCIIEncoding asen = new ASCIIEncoding(); ////s.Send(asen.GetBytes("The string was recieved by the server.")); return stringaRicezione; } } }
CLIENT
codice:
using System; using System.IO; using System.Net; using System.Text; using System.Net.Sockets; public class clnt { public static void Main() { try { TcpClient tcpclnt = new TcpClient(); Console.WriteLine("Connecting....."); tcpclnt.Connect("192.168.1.6", 16333); // use the ipaddress as in the server program Console.WriteLine("Connected"); Comunica(tcpclnt); if (Comunica(tcpclnt) == "Close") tcpclnt.Close(); else Comunica(tcpclnt); } catch (Exception e) { Console.WriteLine("Error..... " + e.StackTrace); } } static string Comunica(TcpClient tcpclnt) { Console.Write("Chatta: "); String str = Console.ReadLine(); Stream stm = tcpclnt.GetStream(); ASCIIEncoding asen = new ASCIIEncoding(); byte[] ba = asen.GetBytes(str); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); byte[] bb = new byte[100]; int k = stm.Read(bb, 0, 100); string comunicazione = ""; for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(bb[i])); comunicazione += Convert.ToChar(bb[i]); } return comunicazione; } }