【发布时间】:2020-11-19 21:58:37
【问题描述】:
以下控制台应用程序在 Windows 上运行良好,但是当我在 WSL 中或作为 Linux Docker 容器运行它时,我从服务器收到超时。
using System;
using System.IO;
using System.Net.Sockets;
namespace ClientTest
{
class Program
{
static void Main(string[] args)
{
const string server = "inbound-smtp.us-west-2.amazonaws.com";
const int port = 25;
Console.WriteLine($"Connecting to: {server}");
using (var client = new TcpClient(server, port))
{
using (NetworkStream stream = client.GetStream())
using (StreamReader clearTextReader = new StreamReader(stream))
using (StreamWriter clearTextWriter = new StreamWriter(stream) { AutoFlush = true })
{
// read connection response
var connectResponse = clearTextReader.ReadLine();
Console.WriteLine(connectResponse);
// send command
Console.WriteLine($"HELO domain.com");
clearTextWriter.WriteLine("HELO domain.com");
// read command response
var commandResponse = clearTextReader.ReadLine();
Console.WriteLine(commandResponse);
}
}
}
}
}
但是,例如,如果我将服务器地址更改为 ASPMX.L.GOOGLE.com,则该应用程序在 Windows 和 Linux 上可以正常运行。
控制台应用程序以 .net5.0 为目标,但也尝试使用 .net3.1 并获得了相同的结果。我还尝试在带有云中 Docker 的 Linux VM 上运行它,但也得到了相同的结果。
Linux 上的 StreamWriter/NetworkStream 是否存在差异(与 Windows 相比),更具体地说,为什么我在使用 Google 服务器时没有遇到相同的问题?
【问题讨论】:
标签: c# .net-core windows-subsystem-for-linux networkstream .net-5