【问题标题】:How to send messages from server to a specific client如何将消息从服​​务器发送到特定客户端
【发布时间】:2015-05-20 06:51:29
【问题描述】:

我正在使用 WebSockets 并尝试为我的服务器客户端设置代码库。我知道如何从客户端向服务器发送消息,也知道如何从服务器端监听这些消息。

但是,如何将消息发送回客户端?

// here is the _clientSocket that I accepted
_clientSocket = _serverSocket.Accept();
int received = _clientSocket.Receive(_buffer, 0, _buffer.Length,
    SocketFlags.None);
// here is the message I got from the client
string receivedMsg = Encoding.ASCII.GetString(_buffer);

if (receivedMsg == "1") 
//TO DO: send back to client "This is a test message from server".

【问题讨论】:

  • 你知道有一个叫 SignalR 的框架吗? :P
  • SignalR 可以在没有 ASP.NET 的情况下使用
  • WebSockets 已经得到很好的支持,使用有限的可扩展性的 polyfill 是没有意义的。

标签: c# websocket


【解决方案1】:

基本上你必须使用SendAsync方法:

var sendbuffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes("Whatever text you want to send"));

await socket.SendAsync(sendbuffer , WebSocketMessageType.Text, true, CancellationToken.None)
            .ConfigureAwait(false);

看看这个例子:https://stackoverflow.com/a/26274839/307976

【讨论】:

  • 我正在使用同步套接字。 socket 应该是什么?我的问题中的_clientSocket_serverSocket 在哪里?
  • 我的意思是我期待像_serverSocket.SendTo(_clienSocket, ... , ... , ... ); 这样的东西然后客户会像这样听_clientSocket.Receive(...);
  • 应该是 _clientSocket.SendAsync(...blah...blah 。另请注意,WebSocket 标准使用 UTF8 编码而不是 ASCII。
  • 你为什么使用异步?正如我所说,我正在使用同步套接字。 _clientSocket.Send(Encoding.ASCII.GetBytes(input)); 将数据从客户端发送到服务器,而不是从服务器发送到客户端。此外,您没有描述客户如何聆听
  • 不,如果您在服务器端接受该套接字,则该客户端对象代表客户端,如果您调用“发送”,它将转到客户端。
【解决方案2】:

你必须打电话:

_clientsocket.Send(...);

【讨论】:

  • 我使用完全相同的代码将数据从客户端发送到服务器,而不是从服务器发送到客户端。还有,你不告诉我怎么让客户听
  • 你的 _clientsocket 是服务器到客户端的套接字。你可以在上面调用 Receive 和 Send ...
  • 这就是我将数据从客户端发送到服务器的方式。 _clientSocket.Send(Encoding.ASCII.GetBytes("hello")); 向服务器发送“hello”。服务器像这样监听消息:byte[] _dataReceived = new byte[_clientSocket.ReceiveBufferSize]; _clientSocket.Receive(_dataReceived);。你是说同样的代码,也可以从服务器发送到客户端?我不明白
  • 您在客户端上有一个套接字,您可以在其中发送和接收数据以及服务器上的一个套接字 (_clientSocket) 以发送和接收数据......想象它像一个花园软管......
  • 并且您在服务器上有第二个套接字来接受连接(_serverSocket)
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
相关资源
最近更新 更多