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

使用SimpleTCP无法发送数据:客户端连接异常求助

问题分析与修复方案

问题说明

本地开发TCP/IP客户端/服务器应用时,服务器运行正常,但客户端点击发送按钮触发异常:

System.Exception: '无法向空TcpClient发送数据(请检查是否已调用Connect方法)'

问题根源

客户端代码的btnConnect_Click方法仅执行了禁用按钮操作,完全没有调用客户端的连接方法,导致client对象未与服务器建立实际连接,调用Write方法时自然会抛出空对象异常。

修复步骤

1. 补全客户端连接逻辑

修改客户端的btnConnect_Click方法,添加连接服务器的代码(假设你有输入服务器IP和端口的控件,比如txtHost和txtPort):

private void btnConnect_Click(object sender, EventArgs e)
{
    btnConnect.Enabled = false;
    try
    {
        // 从输入控件获取服务器地址和端口
        string serverIp = txtHost.Text;
        int port = int.Parse(txtPort.Text);
        // 建立与服务器的连接
        client.Connect(serverIp, port);
        // 连接成功后启用发送按钮
        btnSend.Enabled = true;
        textStatus.Text += "已连接到服务器\n";
    }
    catch (Exception ex)
    {
        textStatus.Text += $"连接失败:{ex.Message}\n";
        btnConnect.Enabled = true;
    }
}

2. 优化初始状态(可选)

在Form1_Load中默认禁用发送按钮,避免未连接时误触:

private void Form1_Load(object sender, EventArgs e)
{
    btnSend.Enabled = false; // 添加此行
    client = new SimpleTcpClient();
    client.StringEncoder = Encoding.UTF8;
    client.DataReceived += Client_DataReceived;
}

额外注意点

  • 确保客户端输入的服务器IP和端口,与服务器启动时配置的textHost、textPort值完全一致
  • 可以根据UI布局调整控件名称,保证代码与实际控件对应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:46:05