sirisha.basavaraju Ответов: 1

Как читать с TCP-порта в моей системе


Всем привет,

Я должен написать службу, где служба должна непрерывно прослушивать TCP-порт системы, в которой она развернута.

Я попробовал несколько консольных примеров, но не знаю, в чем ошибка, что они не работают.

заранее спасибо.

Что я уже пробовал:

Я попробовал использовать следующий код:
TcpListener server = null;
           try
           {
               // Set the TcpListener on port 13000.
               Int32 port = 8080;
               IPAddress localAddr = IPAddress.Parse("10.0.0.5");

               // TcpListener server = new TcpListener(port);
               server = new TcpListener(IPAddress.Any, port);
               // Start listening for client requests.
               server.Start();

               // Buffer for reading data
               Byte[] bytes = new Byte[256];
               String data = null;

               // Enter the listening loop.
               while (true)
               {
                   Console.Write("Waiting for a connection... ");

                   // Perform a blocking call to accept requests.
                   // You could also user server.AcceptSocket() here.
                   TcpClient client = server.AcceptTcpClient();
                   Console.WriteLine("Connected!");

                   data = null;

                   // Get a stream object for reading and writing
                   NetworkStream stream = client.GetStream();

                   int i;

                   // Loop to receive all the data sent by the client.
                   while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                   {
                       // Translate data bytes to a ASCII string.
                       data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                       Console.WriteLine("Received: {0}", data);

                       // Process the data sent by the client.
                       data = data.ToUpper();

                       byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                       // Send back a response.
                       stream.Write(msg, 0, msg.Length);
                       Console.WriteLine("Sent: {0}", data);
                   }

                   // Shutdown and end connection
                   client.Close();
               }
           }
           catch (SocketException e)
           {
               Console.WriteLine("SocketException: {0}", e);
           }
           finally
           {
               // Stop listening for new clients.
               server.Stop();
           }


           Console.WriteLine("\nHit enter to continue...");
           Console.Read();

F-ES Sitecore

"Не работает" не дает никому достаточно информации, чтобы помочь вам. Объясните любые сообщения об ошибках, которые вы получаете, или любое поведение, которое не происходит, которое должно происходить, или поведение, которое не должно происходить, но происходит.

sirisha.basavaraju

Консоль отображает "ожидание соединения..." и не выходит за его пределы
Я получаю данные о порте, когда проверяю с помощью инструмента "Socket Test", но не получаю данные из своей программы C#

F-ES Sitecore

Что подключается к этому порту на вашем компьютере? Какие данные вы ожидаете увидеть?

1 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Tcplistener с.AcceptTcpClient это блокирующий метод. Он не вернется, пока не будет установлено соединение... В вашем случае это означает, что нет соединения по этому адресу и Порту...
Поскольку вы утверждаете, что некоторые тестовые программы действительно распознают устройство, у вас, вероятно, неверные настройки (IP/порт)...