本 Skill 帮助处理 TCP 连接、套接字编程和常见网络调试:建立连接、收发数据、测试端口、以及排查连接失败或超时等问题。
当用户提到或需要:
```powershell
Test-NetConnection -ComputerName host -Port port
```
或使用 .NET 套接字简单测端口(脚本中):
```powershell
$tcp = New-Object System.Net.Sockets.TcpClient; $tcp.Connect("host", port); $tcp.Close()
```
```bash
nc -zv host port
```
交互收发:
```bash
nc host port
```
```bash
telnet host port
```
根据用户当前 OS 优先给出可用方案(如 Windows 用 Test-NetConnection 或 PowerShell 脚本)。
注意:不同语言 API 不同,只给思路或该语言下的最小示例,避免冗长。
socket.socket(socket.AF_INET, socket.SOCK_STREAM),connect()/bind()+listen()+accept(),send()/recv()。注意 recv 可能一次读不满,需循环或协议约定。
net.createConnection(port, host) 或 net.createServer(),事件 data/end/error。
net.Dial("tcp", "host:port"),net.Listen("tcp", ":port") + Accept(),Read/Write。
TcpClient/TcpListener,或 Socket 类。
按用户技术栈给出对应片段,并提醒:收发要处理缓冲与边界,服务端要处理多客户端(多线程/异步/select 等)和优雅关闭。
| 现象 | 可能原因 | 建议 |
|------|----------|------|
| Connection refused | 目标端口无服务监听、或防火墙拦截 | 确认服务已启动、监听地址和端口正确;检查本机/目标机防火墙 |
| Timeout | 网络不通、路由/防火墙丢弃、目标未监听 | 先 ping(若允许),再用端口检测工具测目标端口 |
| Address already in use | 端口被占用或 TIME_WAIT 未释放 | 换端口或等待;服务端可考虑 SO_REUSEADDR(依语言/OS) |
| Broken pipe / Connection reset | 对端关闭连接后本端仍写 | 检查关闭顺序与错误处理,写前判断连接是否仍有效 |
127.0.0.1 或 localhost。
共 1 个版本