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

单电脑环境下C#网络编程求助:TCP连接被拒绝

单电脑测试C# TCP文件传输的解决办法

1. 先确保服务端正确启动监听

单电脑测试时,服务端要绑定本地回环地址(127.0.0.1)或监听所有网卡(0.0.0.0),选一个未被占用的端口(比如8888)。以下是最简服务端代码,适合新手快速验证:

using System;
using System.Net;
using System.Net.Sockets;
using System.IO;

class TcpFileServer
{
    static void Main()
    {
        // 绑定本地回环地址,监听8888端口
        TcpListener listener = new TcpListener(IPAddress.Loopback, 8888);
        listener.Start();
        Console.WriteLine("服务端已启动,等待客户端连接...");

        // 阻塞等待客户端连接
        TcpClient client = listener.AcceptTcpClient();
        Console.WriteLine("客户端已连接");

        // 接收文件并保存
        using (NetworkStream stream = client.GetStream())
        using (FileStream fs = new FileStream("received_file.txt", FileMode.Create))
        {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                fs.Write(buffer, 0, bytesRead);
            }
        }

        client.Close();
        listener.Stop();
        Console.WriteLine("文件接收完成,服务端关闭");
    }
}

2. 客户端连接对应地址

客户端要和服务端用相同的IP(127.0.0.1)和端口(8888),以下是客户端代码:

using System;
using System.Net.Sockets;
using System.IO;

class TcpFileClient
{
    static void Main()
    {
        TcpClient client = new TcpClient();
        // 连接本地服务端
        client.Connect("127.0.0.1", 8888);
        Console.WriteLine("已连接到服务端");

        // 发送本地的test.txt文件(确保该文件存在)
        using (NetworkStream stream = client.GetStream())
        using (FileStream fs = new FileStream("test.txt", FileMode.Open))
        {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
            {
                stream.Write(buffer, 0, bytesRead);
            }
        }

        client.Close();
        Console.WriteLine("文件发送完成,客户端关闭");
    }
}

3. 常见问题排查

  • 启动顺序错了:必须先运行服务端,看到“等待客户端连接”的提示后,再启动客户端。先开客户端会直接触发“拒绝连接”。
  • 端口被占用:用命令netstat -ano | findstr :8888检查端口是否被其他程序占用,换个端口(比如8889)重试。
  • 防火墙拦截:本地防火墙可能会阻断TCP连接,测试时可以临时关闭防火墙或给程序添加允许规则。
  • 文件权限问题:确保服务端保存文件的路径、客户端读取文件的路径都有读写权限,避免隐性错误。

4. 测试步骤

  1. 编译并运行服务端程序,等待连接提示出现。
  2. 运行客户端程序,客户端会自动连接服务端并发送文件。
  3. 完成后检查服务端目录下的received_file.txt,和客户端的test.txt内容一致即为成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:42:39