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

C# WPF应用中TCP客户端连接目标机器被拒绝问题求助

问题1:解决"Connection refused to target machine"连接错误

核心问题与修复方案

  • 服务器初始化代码未执行
    服务器的MainWindow_Load方法未在XAML中绑定Loaded事件,导致server对象的初始化、事件绑定逻辑从未运行。
    修复:在服务器窗口的XAML中添加Loaded事件绑定:

    <Window x:Class="GUI.EchoWindowTest"
            ...
            Loaded="MainWindow_Load">
    
  • IP地址解析逻辑错误
    原代码用long.Parse(txtHost.Text)解析"127.0.0.1"会抛出格式异常,导致服务器无法启动。
    修复:替换为正确的IP解析方法:

    // 原错误代码
    // System.Net.IPAddress ip = new System.Net.IPAddress(long.Parse(txtHost.Text));
    // 修复后
    System.Net.IPAddress ip = System.Net.IPAddress.Parse(txtHost.Text);
    
  • 消息分隔符设置无效
    server.Delimiter = 0 * 13计算结果为0,导致SimpleTCP无法识别消息边界,引发异常或数据接收失败。
    修复:设置合理的分隔符(如换行符ASCII码10):

    server.Delimiter = 10; // 用换行符作为消息分隔
    

验证步骤

  1. 启动服务器,点击Start按钮,确认txtStatus显示"Server starting ..."且无报错
  2. 用Putty重新尝试telnet 127.0.0.1:12345,连接成功则说明问题解决

问题2:实现TCP客户端发送JSON、服务器接收并响应

客户端代码优化

  • 统一编码格式:原代码用ASCII序列化JSON,无法处理Unicode字符,改为UTF-8并添加消息分隔符:
    // 原代码
    // await stream.WriteAsync(Encoding.ASCII.GetBytes(jsonString));
    // 修复后
    await stream.WriteAsync(Encoding.UTF8.GetBytes(jsonString + "\n")); // 添加换行符匹配服务器分隔规则
    
  • 替换阻塞延迟:Thread.Sleep(500)会阻塞UI线程,改为非阻塞延迟:
    // Thread.Sleep(500);
    await Task.Delay(500);
    

服务器代码优化(接收+响应)

当前服务器仅显示消息,未向客户端回发数据,导致客户端ReadAsync一直阻塞。修改Server_DataReceived方法添加回发逻辑:

private void Server_DataReceived(object sender, SimpleTCP.Message e)
{
    txtStatus.Dispatcher.Invoke(new Action(delegate
    {
        txtStatus.Text += $"收到JSON请求: {e.MessageString}\n";
    }));
    // 回发接收到的JSON数据,让客户端完成接收流程
    e.Reply(e.MessageString + "\n");
}

额外代码简化

  • 客户端直接用IPAddress.Loopback代替DNS解析,简化代码:
    // 原代码
    // IPHostEntry IpHostInfo = Dns.GetHostEntry("127.0.0.1");
    // IPAddress IpAddress = IpHostInfo.AddressList[0];
    // 简化后
    var endPoint = new IPEndPoint(IPAddress.Loopback, 12345);
    
  • 客户端TCPConnectionModel简化只读属性:
    public TimeSpan Elapsed => Processed - Started;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:50:42