So I'm new to network programming in C# and Im kinda stuck right now. So my code works perfectly for sending some data over from client to server and back from the server to client, but what if I want to keep the TcpClient open and send data from client to server later on? Or maybe even send data from server to client when connection is open?
Also, in order for the server to recieve data from client (if the TcpClient connection is open), does it need to be in a infinite loop? And how does the server check if theres data to recieve?
However, this is my code:
Server:
Client:
Also, in order for the server to recieve data from client (if the TcpClient connection is open), does it need to be in a infinite loop? And how does the server check if theres data to recieve?
However, this is my code:
Server:
Code:
Console.WriteLine("Connecting...");
TcpListener Listener = new TcpListener(IPAddress.Any, 30010);
Listener.Start();
Console.WriteLine("Connected...");
while (true)
{
Console.WriteLine("Waiting for Client...");
TcpClient Client = Listener.AcceptTcpClient();
Console.WriteLine("Client accepted...");
NetworkStream networkStream = Client.GetStream();
byte[] buffer = new byte[1024];
networkStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer));
byte[] sbuffer = Encoding.ASCII.GetBytes("MSG from Server...");
networkStream.Write(sbuffer, 0, sbuffer.Length);
networkStream.Close();
Client.Close();
}
Client:
Code:
Console.WriteLine("Connecting...");
TcpClient Client = new TcpClient("127.0.0.1", 30010);
Console.WriteLine("Connected to Server...");
NetworkStream networkStream = Client.GetStream();
byte[] buffer = Encoding.ASCII.GetBytes("Test MSG.");
networkStream.Write(buffer, 0, buffer.Length);
byte[] gbuffer = new byte[1024];
networkStream.Read(gbuffer, 0, gbuffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(gbuffer));
networkStream.Close();
Client.Close();
Console.ReadKey();
Last edited: