Server po obdržaní správy ju zobrazí a pošle potvrdenie, ktoré dostane klient. Klient môže byť spustený na rovnakom počítači ako server alebo z iného počítača.
Kód v c# client
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Threading; namespace TCP_client { /// <summary> /// TCP client - www.projectik.eu /// </summary> class Program { static void Main(string[] args) { try { string ipServer = "127.0.0.1"; int portServer = 8001; String str = String.Empty; int timeout = 1000; int myTime = 0; bool statusTimeOut = false; List<byte> buffer = new List<byte>(); Console.WriteLine("Connecting....."); //zadame text na odoslanie Console.WriteLine("Enter the string to be transmitted : "); //nacitanie zadaneho textu do premennej str = Console.ReadLine(); using (TcpClient client = new TcpClient(ipServer, portServer)) { //Client sa uspesne pripojil Console.WriteLine("Connected"); client.ReceiveTimeout = 3000; client.SendTimeout = 3000; using (NetworkStream stream = client.GetStream()) { stream.Write(ASCIIEncoding.ASCII.GetBytes(str), 0, str.Length); //cakanie na odpoved od servera while (stream.DataAvailable == false) { Thread.Sleep(1); if (++myTime > timeout) { statusTimeOut = true; break; } } if (statusTimeOut) { Console.Write("Time out."); return; } //citaj pokial su data while (stream.DataAvailable) { buffer.Add((byte)stream.ReadByte()); } } Console.WriteLine("Server reply : "); //Vypiseme co poslal server Console.WriteLine(ASCIIEncoding.ASCII.GetString(buffer.ToArray())); Console.ReadLine(); } } catch (Exception e) { Console.WriteLine("Error..... " + e.Message); } } } }
Kód v c# server
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace TCPserver { class Program { static void Main(string[] args) { int port = 8001; IPAddress ipAddress = IPAddress.Any; TcpClient client = null; ASCIIEncoding encoder = new ASCIIEncoding(); byte[] buffer; TcpListener listener = null; try { listener = new TcpListener(ipAddress, port); listener.Start(); Console.WriteLine("Server is running"); Console.WriteLine("Listening on port " + port); Console.WriteLine("Waiting for connections..."); while (true) { client = listener.AcceptTcpClient(); using (NetworkStream stream = client.GetStream()) { buffer = new byte[1024]; stream.Read(buffer, 0, buffer.Length); Console.WriteLine(encoder.GetString(buffer)); // server odpovie dakujem za spravicku stream.Write(encoder.GetBytes("dakujem za spravicku"), 0, ("dakujem za spravicku").Length); } } } catch (Exception ex1) { Console.WriteLine(ex1.Message); } finally { if (client != null) { client.Close(); } listener.Stop(); } } } }
V nasledujúcom príklade vypustíme obe triedy TcpListener a TcpClient a namiesto toho priamo použijeme System.Net.Sockets.Socket triedy.
Kód v c# client
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; namespace TCP_client { /// <summary> /// TCP client - www.projectik.eu /// </summary> class Program { static void Main(string[] args) { try { String str = String.Empty; IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001); byte[] buffer = new byte[4096]; //buffer 4kB Console.WriteLine("Connecting....."); //zadame text na odoslanie Console.WriteLine("Enter the string to be transmitted : "); //nacitanie zadaneho textu do premennej str = Console.ReadLine(); using (Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { sock.Connect(iep); //Client sa uspesne pripojil Console.WriteLine("Connected"); //set timeout sock.ReceiveTimeout = 3000; sock.SendTimeout = 3000; //Convertovenie stringu na byte array byte[] data = Encoding.ASCII.GetBytes(str); //odoslanie spravy sock.Send(data, data.Length, SocketFlags.None); //prijatie odpovede od servera int numberOfBytes = sock.Receive(buffer); byte[] formatedBytes = new byte[numberOfBytes]; Array.Copy(buffer, formatedBytes, numberOfBytes); //Vypiseme co poslal server Console.WriteLine("Server reply : "); Console.WriteLine(ASCIIEncoding.ASCII.GetString(formatedBytes.ToArray())); Console.ReadLine(); } } catch (Exception e) { Console.WriteLine("Error..... " + e.Message); } } } }
Kód v c# server
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace TCPserver { class Program { static void Main(string[] args) { byte[] buffer = new byte[4096];//4kb buffer try { Console.WriteLine("Server is running"); Console.WriteLine("Waiting for connections..."); using (Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { //nacuvanie od vsetkych IP adries IPEndPoint iep = new IPEndPoint(IPAddress.Any, 8001); sock.Bind(iep); sock.Listen(1); while (true) { Socket listener = sock.Accept(); // sock.Poll(0, SelectMode.SelectRead); if (listener.Connected) { //prijatie odpovede od servera int numberOfBytes = listener.Receive(buffer); byte[] formatedBytes = new byte[numberOfBytes]; Array.Copy(buffer, formatedBytes, numberOfBytes); //Vypiseme co poslal server Console.WriteLine("Client send : "); Console.WriteLine(ASCIIEncoding.ASCII.GetString(formatedBytes)); //Odpoved servera byte[] data = Encoding.ASCII.GetBytes("dakujem za spravicku"); listener.Send(data, data.Length, SocketFlags.None); } } } } catch (Exception ex1) { Console.WriteLine(ex1.Message); } } } }