Как получить доступ к контейнерному (Docker) TcpListener в .NET 8?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить доступ к контейнерному (Docker) TcpListener в .NET 8?

Сообщение Anonymous »

Итак, у меня есть этот код; он запускает TcpListener в .NET и точно такой же, как пример в документации Microsoft:
https://learn.microsoft.com/en-us/dotne ... cplistener? view=net-8.0

Код: Выделить всё

public static void Main()
{
TcpListener server = null;
try
{
// Set the TcpListener on port 13000.
Int32 port = 6425;
IPAddress localAddr = IPAddress.Parse("127.80.69.10");

// TcpListener server = new TcpListener(port);
server = new TcpListener(localAddr, 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 use server.AcceptSocket() here.
using 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 an 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);
}
}
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
finally
{
server.Stop();
}

Console.WriteLine("\nHit enter to continue...");
Console.Read();
}
Когда я запускаю его в Visual Studio, он работает нормально, но когда он помещается в контейнер с помощью Docker, TcpClient больше не может установить соединение. Приведенный выше код выполняется в контейнере без исключений, но возникает странная ошибка: строки Console.Write не печатаются в журналах при запуске в контейнере. Однако я уверен, что он достигает и выполняет код на основе точек останова.
Код для TcpClient снова точно такой же, как в документации Microsoft:

https://learn.microsoft.com/en-us/dotne ... ew=net-8.0

Подробнее здесь: https://stackoverflow.com/questions/791 ... r-in-net-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»