🧪 Skills
tcp
Helps with TCP sockets, client/server connections, and network debugging. Use when the user needs to open TCP connections, write socket code, test ports, deb...
v1.0.0
Description
name: tcp description: Helps with TCP sockets, client/server connections, and network debugging. Use when the user needs to open TCP connections, write socket code, test ports, debug connection refused or timeouts, or work with raw TCP protocols.
TCP
本 Skill 帮助处理 TCP 连接、套接字编程和常见网络调试:建立连接、收发数据、测试端口、以及排查连接失败或超时等问题。
何时使用
当用户提到或需要:
- 写 TCP 客户端/服务端(socket 编程)
- 测试某主机某端口是否可达(telnet、nc、PowerShell)
- 连接被拒绝、超时、半开连接等错误排查
- 基于 TCP 的自定义协议或简单服务
- 与 TCP 相关的防火墙、端口、绑定地址配置
快速测试连接与端口
命令行
-
PowerShell(Windows):
Test-NetConnection -ComputerName host -Port port或使用 .NET 套接字简单测端口(脚本中):
$tcp = New-Object System.Net.Sockets.TcpClient; $tcp.Connect("host", port); $tcp.Close() -
netcat(nc)(若已安装):
nc -zv host port交互收发:
nc host port -
telnet(多数系统已弃用或未默认安装,仅作备选):
telnet host port
根据用户当前 OS 优先给出可用方案(如 Windows 用 Test-NetConnection 或 PowerShell 脚本)。
客户端/服务端代码要点
通用流程
- 客户端:创建 socket → connect(host, port) → send/recv → close。
- 服务端:创建 socket → bind(address, port) → listen() → accept() → 与客户端 socket 通信 → close。
注意:不同语言 API 不同,只给思路或该语言下的最小示例,避免冗长。
常见语言速查
- Python:
socket.socket(socket.AF_INET, socket.SOCK_STREAM),connect()/bind()+listen()+accept(),send()/recv()。注意recv可能一次读不满,需循环或协议约定。 - Node.js:
net.createConnection(port, host)或net.createServer(),事件data/end/error。 - Go:
net.Dial("tcp", "host:port"),net.Listen("tcp", ":port")+Accept(),Read/Write。 - C#:
TcpClient/TcpListener,或Socket类。
按用户技术栈给出对应片段,并提醒:收发要处理缓冲与边界,服务端要处理多客户端(多线程/异步/select 等)和优雅关闭。
常见错误与排查
| 现象 | 可能原因 | 建议 |
|---|---|---|
| Connection refused | 目标端口无服务监听、或防火墙拦截 | 确认服务已启动、监听地址和端口正确;检查本机/目标机防火墙 |
| Timeout | 网络不通、路由/防火墙丢弃、目标未监听 | 先 ping(若允许),再用端口检测工具测目标端口 |
| Address already in use | 端口被占用或 TIME_WAIT 未释放 | 换端口或等待;服务端可考虑 SO_REUSEADDR(依语言/OS) |
| Broken pipe / Connection reset | 对端关闭连接后本端仍写 | 检查关闭顺序与错误处理,写前判断连接是否仍有效 |
协议与数据
- 自定义协议:需约定边界(长度前缀、分隔符、固定头等),避免粘包/半包处理错误。
- 调试:可用 Wireshark、tcpdump 抓包;本地测试可用
127.0.0.1或localhost。
安全与注意
- 暴露在公网的服务要鉴权、限流,避免裸 TCP 直接暴露敏感能力。
- 生产环境避免在代码里写死 IP/端口,用配置或环境变量。
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!