【问题标题】:How to send a data from one client to another client?如何将数据从一个客户端发送到另一个客户端?
【发布时间】:2011-10-29 06:21:54
【问题描述】:

我已经使用纯套接字创建了自己的 VOIP 服务器和客户端。所有客户端都可以向服务器发送语音数据,服务器接收到语音数据并实时播放;但是如果客户想要与特定客户进行通信怎么办?我怎么做?

编辑:例如客户端 A 连接到 C(即服务器),客户端 B 连接到 C。A 如何在向 C 发送数据的情况下向 B 发送数据?

P.S.如果需要,我可以显示我的代码。或者,如果我不具体,请告诉我,我会详细说明我的问题。

【问题讨论】:

  • 你在问一个完整的设计。我认为你应该缩小你的问题范围。

标签: c# tcp client voip


【解决方案1】:
  • A 连接到 C
  • B 连接到 C
  • A 询问C B 是否可用
  • C 检查他是否可以与 B 通信
  • 如果是这样
    • A 将数据发送到 C,并说 这是给 B
    • C 将数据传输到B
  • 如果没有
    • A 稍后尝试询问 C B 是否可用

【讨论】:

  • 谢谢,我认为这会很完美。如果我在执行此方法时遇到问题,我会用一些源代码发布另一个问题。
  • 非常好,如果你想要双倍的整体数据传输和传输时间 + 消耗服务器的一些 cpu 时间
  • @L.B:我假设,正如@DanielLopez 调用C 一个服务器和AB 客户端,所有数据交换必须通过服务器。但如果A 可以直接与B 对话,那可能会更好。无法在此处就最佳选择提出建议,需要对项目进行更多描述。
  • @Otiel 这是问题How can A send data to B with or without sending data to C
【解决方案2】:

您的服务器可以作为协调器工作。 A 可以从您的服务器请求Client B's IP & listening port,然后直接连接到该地址。

【讨论】:

  • 我正在使用 TcpListener 和 TcpClient,如何从 TcpClient 对象请求 IP 地址?
  • @DanielLopez:为此提出一个新问题。
  • 您应该实现更高级别的协议。例如消息(例如,序列化类)asking a client's inforeturning infosends voice data 等。我认为您应该阅读一些有关 RPC 的文档。 en.wikipedia.org/wiki/Remote_procedure_call
猜你喜欢
  • 2015-09-04
  • 2015-11-06
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多