Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Server Client send/receive simple text

I have a homework to build an application which will send and receive simple string between server and client. I know how to establish connection, but don't know how to send and receive string. This is my code :

public partial class Form1 : Form {     private Thread n_server;     private Thread n_client;     private Thread n_send_server;     private TcpClient client;     private TcpListener listener;     private int port = 2222;     private string IP = " ";     private Socket socket;     public Form1()     {         InitializeComponent();     }      private void exitToolStripMenuItem_Click(object sender, EventArgs e)     {         Application.Exit();     }      public void Server()     {         listener = new TcpListener(IPAddress.Any, port);         listener.Start();         try         {             socket = listener.AcceptSocket();             if (socket.Connected)             {                 textBox2.Invoke((MethodInvoker)delegate { textBox2.Text = "Client : " + socket.RemoteEndPoint.ToString(); });             }         }         catch         {         }     }      public void Client()     {         IP = "localhost";         client = new TcpClient();         try         {             client.Connect(IP, port);         }          catch (Exception ex)         {             MessageBox.Show("Error : " + ex.Message);         }          if (client.Connected)         {             textBox3.Invoke((MethodInvoker)delegate { textBox3.Text = "Connected..."; });          }     }      private void button1_Click(object sender, EventArgs e)     {         n_server = new Thread(new ThreadStart(Server));          n_server.IsBackground = true;         n_server.Start();         textBox1.Text = "Server up";     }      private void button2_Click(object sender, EventArgs e)     {         n_client = new Thread(new ThreadStart(Client));         n_client.IsBackground = true;         n_client.Start();     }      private void send()     {         // I want to use this method for both buttons : "send button" on server side    and "send button"         // on client side. First I read text from textbox2 on server side or textbox3         // on client side than accept and write the string to label2(s) or label3(c).         //      }       private void button3_Click(object sender, EventArgs e)     {         n_send_server = new Thread(new ThreadStart(send));         n_send_server.IsBackground = true;         n_send_server.Start();     } } 
like image 684
Iposify Avatar asked Apr 16 '12 22:04

Iposify


People also ask

What is a TCP client?

A TCP client initiates a connection request to a TCP server in order to setup a connection with the server. A real TCP server can accept multiple connections on a socket. A server socket in the simulator accepts only one TCP connection in its lifetime.

What is TCP server application?

TCP: the InterSystems IRIS Transmission Control Protocol (TCP) binding. Establishes a two-way connection between a server and a single client. Provides reliable byte stream transmission of data with error checking and correction, and message acknowledgement.

What is TcpClient C#?

The TcpClient class provides simple methods for connecting, sending, and receiving stream data over a network in synchronous blocking mode. In order for TcpClient to connect and exchange data, a TcpListener or Socket created with the TCP ProtocolType must be listening for incoming connection requests.

How do I make a client server?

Open the server management program on your Windows Server. Do this by clicking "Manage Your Server" from the start menu. Click "Add or Remove a Role." A new window will open with the configure your server wizard. Click "Next." A list of the different functions functions your server can perform is then displayed.


1 Answers

The following code send and recieve the current date and time from and to the server

//The following code is for the server application:

namespace Server {     class Program     {         const int PORT_NO = 5000;         const string SERVER_IP = "127.0.0.1";          static void Main(string[] args)         {             //---listen at the specified IP and port no.---             IPAddress localAdd = IPAddress.Parse(SERVER_IP);             TcpListener listener = new TcpListener(localAdd, PORT_NO);             Console.WriteLine("Listening...");             listener.Start();              //---incoming client connected---             TcpClient client = listener.AcceptTcpClient();              //---get the incoming data through a network stream---             NetworkStream nwStream = client.GetStream();             byte[] buffer = new byte[client.ReceiveBufferSize];              //---read incoming stream---             int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);              //---convert the data received into a string---             string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);             Console.WriteLine("Received : " + dataReceived);              //---write back the text to the client---             Console.WriteLine("Sending back : " + dataReceived);             nwStream.Write(buffer, 0, bytesRead);             client.Close();             listener.Stop();             Console.ReadLine();         }     } } 

//this is the code for the client

namespace Client {     class Program     {         const int PORT_NO = 5000;         const string SERVER_IP = "127.0.0.1";         static void Main(string[] args)         {             //---data to send to the server---             string textToSend = DateTime.Now.ToString();              //---create a TCPClient object at the IP and port no.---             TcpClient client = new TcpClient(SERVER_IP, PORT_NO);             NetworkStream nwStream = client.GetStream();             byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(textToSend);              //---send the text---             Console.WriteLine("Sending : " + textToSend);             nwStream.Write(bytesToSend, 0, bytesToSend.Length);              //---read back the text---             byte[] bytesToRead = new byte[client.ReceiveBufferSize];             int bytesRead = nwStream.Read(bytesToRead, 0, client.ReceiveBufferSize);             Console.WriteLine("Received : " + Encoding.ASCII.GetString(bytesToRead, 0, bytesRead));             Console.ReadLine();             client.Close();         }     } } 
like image 110
Nudier Mena Avatar answered Oct 21 '22 14:10

Nudier Mena