0

i need getting some advices, which method is better for creating an async tcpClient connection. My application opens tcpClient,writing a message and waits to read an answer. Method 1, i have create an async task for all tcpClient function.

await Task.Run(() =>
{
    using (var client = new TcpClient(terminalIP, terminalPort))
    using (var stream = client.GetStream())
    {
       var message = "my message";
       var data = Encoding.ASCII.GetBytes(string.Format(message);
       stream.Write(data, 0, data.Length);

       var readingByte = new byte[256];
       var sessionBytesRead = stream.Read(readingByte, 0, readingByte.Length);
       var sessionTxt = Encoding.ASCII.GetString(readingByte, 0, sessionBytesRead);
     }
});

Method 2, i use async only for open,write and read

using (var client = new TcpClient())
{
   await client.ConnectAsync(terminalIP, terminalPort);

   using (var stream = client.GetStream())
   {
       var message = "my message";
       var data = Encoding.ASCII.GetBytes(message);
       await stream.WriteAsync(data, 0, data.Length);

       var readingByte = new byte[256];
       var sessionBytesRead = await stream.ReadAsync(readingByte, 0, readingByte.Length);
       var sessionTxt = Encoding.ASCII.GetString(readingByte, 0, sessionBytesRead);
   }
}

Which method is better and why? Also if there is any other more efficient way, please let me know.

DmO
  • 357
  • 2
  • 14
  • If you only have one connection, it doesn't matter. The network is way slower than your program. If you want a large number of connections, async I/O in .NET is the only feasible approach. See marked duplicates. See also more general Q&A like https://stackoverflow.com/questions/26450254/c-sharp-best-way-to-implement-tcp-client-server-application, https://stackoverflow.com/questions/31904039/handle-a-large-number-of-tcp-client-connections-in-net, and https://stackoverflow.com/questions/7104293/best-way-to-accept-multiple-tcp-clients – Peter Duniho Apr 18 '20 at 07:09
  • Thank you Peter, the post doesn't seems to answer my question. – DmO Apr 18 '20 at 07:12

0 Answers0