You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 使用Socket发送HTTP请求返回503 Service Unavailable问题排查

代码问题排查结果

核心错误点

  • 目标服务IP解析错误
    你的代码中使用Dns.GetHostEntry(Dns.GetHostName())获取的是本地主机的IP地址,后续连接的IPEndPoint指向的是本地的80端口,也就是你查到的System进程监听的本地80端口,请求根本没有发送到你想要访问的外部网站google.com。你需要解析目标外部网站的域名获取IP,而非解析本地主机名。
  • 协议头配置冲突
    你使用的是HTTP/1.0协议版本,该版本默认不支持长连接,和你设置的Connection: keep-alive头存在逻辑冲突,即便正确连接到外部服务也可能引发兼容问题。
  • 响应接收循环逻辑错误
    Socket.Receive方法在连接正常关闭时会返回0,你当前设置的循环条件bytes >= 0会在连接关闭后进入死循环,持续读取空内容。

修复参考代码

class Program  {
    public static void Main(string[] args)
    {
        // 解析目标外部网站域名,而非本地主机名
        IPHostEntry ipHostInfo = Dns.GetHostEntry("google.com");
        IPAddress ipAddress = ipHostInfo.AddressList[0];
        IPEndPoint RHost = new IPEndPoint(ipAddress, 80);

        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        socket.Connect(RHost);

        // 修正协议和Connection头的冲突,也可以将Connection改为close适配HTTP/1.0
        string HTTPRequestHeaders_String = "GET / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\nAccept: text/html\r\nUser-Agent: ConnectionTest\r\n\r\n";

        Console.WriteLine(HTTPRequestHeaders_String);

        byte[] HTTPRequestHeaders = System.Text.Encoding.ASCII.GetBytes(HTTPRequestHeaders_String);
        socket.Send(HTTPRequestHeaders, SocketFlags.None);

        String Response = "";
        byte[] buffer = new byte[(int)socket.ReceiveBufferSize];

        int bytes;
        // 修正循环条件,返回0代表连接关闭,停止读取
        do {
            bytes = socket.Receive(buffer);
            Response += Encoding.ASCII.GetString(buffer, 0, bytes);
        } while (bytes > 0);
        
        Console.WriteLine(Response);
        socket.Close();
    }
}

503错误说明

你之前收到的503响应是本地监听80端口的System进程返回的,该服务接收到Host为google.com的请求后无法匹配到对应的站点处理逻辑,因此返回服务不可用错误。

内容的提问来源于stack exchange,提问作者nothing_authentic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:45:04