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

使用PuTTY连接Winsock服务器时提示Invalid padding length错误

问题根因与解决方法

核心报错原因:PuTTY连接协议选择错误

你当前实现的是裸TCP协议的回显服务器,没有内置SSH协议的处理逻辑,但PuTTY默认新建会话时使用SSH协议进行连接:

  • SSH协议在TCP连接建立后,会先发送专用握手包完成加密协商、身份校验等流程
  • 你的服务器直接将PuTTY发来的SSH握手包原样回传,PuTTY将回包当作SSH协议报文解析,校验失败就会抛出Invalid padding length received packet错误并主动断开连接

解决方法:
打开PuTTY新建会话界面,连接类型选择Raw,端口填写你定义的17027,再发起连接即可正常使用回显功能。

代码存在的小bug

你回发数据的代码存在冗余发送的问题:

send(clientSocket, buf, bytesReceived + 1, 0);

recv返回的bytesReceived是实际从客户端接收到的字节数,你额外多传1个字节,会把buf中未被接收数据填充的首个\0空字符也发给客户端,属于无效冗余数据。修改为以下代码即可:

send(clientSocket, buf, bytesReceived, 0);

可选优化建议

  • 可以补充bind、listen函数的返回值校验,避免端口被占用时服务无错误提示直接运行
  • 当前服务器一次仅能处理一个客户端连接,后续可改造为多线程/IO复用模型支持多客户端同时接入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:39:03