c#开发 websocketserver 获取客户端ip和端口
时间: 2024-11-09 16:18:59 浏览: 16
C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析
在 C# 开发 WebSocket 服务器时,通常使用 `Microsoft.AspNetCore.WebSockets` 这个库来处理 WebSocket 连接。获取客户端 IP 地址和端口号的过程可以分为以下几个步骤:
1. **创建WebSocket连接**:
首先,在处理 WebSocket 请求时,你需要检查请求头中的 "Sec-Websocket-Origin" 和 "Upgrade" 等字段。
2. **访问连接信息**:
对于每个 WebSocket 连接 (`WebSocketConnectionContext`),你可以通过 `.LocalAddress` 属性获取本地的 IP 和端口。这通常是服务器监听的地址而不是客户端实际的地址。如果你需要客户端的真实 IP,你可能需要额外的信息。
3. **获取真实 IP**:
如果想要得到客户端的 IP,可以尝试通过 `HttpRequest.HttpContext.Connection.RemoteIpAddress` 来获取。但是需要注意的是,如果客户端使用了代理或者安全策略(如 Nginx 转发),这个值可能不是直接的客户端 IP。
```csharp
var request = context.Request;
var clientIp = request.HttpContext.Connection.RemoteIpAddress.ToString();
var ws = context.GetWebSocket();
// 当然,ws is of type IWebSocketConnectionContext
var localPort = ws.LocalAddress.Port;
```
阅读全文