【问题标题】:Can i send buffer in c# client to java SocketChannel server?我可以将 c# 客户端中的缓冲区发送到 java SocketChannel 服务器吗?
【发布时间】:2017-01-18 10:40:51
【问题描述】:

我正在使用 java nio 创建我的游戏服务器,但是我找不到如何使用 socketchannel 或在 c# 中发送数据,我该如何解决这个问题。只使用 i/o 吗?

【问题讨论】:

  • 假设您想同步执行此操作,MSDN 上有一个关于如何使用 Sockets 进行同步通信的示例:msdn.microsoft.com/en-us/library/kb5kfec7(v=vs.110).aspx
  • 我认为 nio 不使用流类型但它没有任何关系?
  • 只要你以两种语言都可以理解的格式发送你的有效载荷,如果 java 使用 NIO 和 C# 不同的东西是无关紧要的。要点是:您可能通过 TCP 很好地发送字节 - 对吧?所以你可以使用你喜欢的方法来发送/接收字节。你只需要有一个体面的协议。无论是您自己发明的字节协议,还是 JSON、Xml 等标准,都能够序列化/反序列化您的有效负载。
  • 说到游戏服务器,您应该考虑所需的吞吐量和可靠性。例如,如果您喜欢第一人称射击游戏,您可能会喜欢使用带有非常简单协议的 UDP,因为每个单独的数据包到达并不重要,但它们应该以非常高的频率交换。跨度>
  • @Fildor 非常感谢!!我想知道我明白这是什么意思。我会试试的

标签: java c# sockets networking socketchannel


【解决方案1】:

通过套接字进行的对象通信有很多限制。你必须定义某种通信协议来理解双方的数据。您还可以发送序列化数据,确保反序列化在另一端以相同的方式完成。为了便于使用,您应该使用一些其他机制,例如 WebServices(SOAP 或 RESTful)。

【讨论】:

  • 我喜欢在使用不同语言的应用程序之间在网络上发送数据时使用 websocket + json 组合。许多主流语言都很好地支持这两种语言
  • @Sidewinder94 OP 说的是游戏服务器。因此,技术的选择很大程度上取决于要交换的数据类型。
  • @Fildor 我完全同意,这只是一个起点,而不是一个完整的奇迹解决方案^^,但我可能没有正确表达。
  • 感谢您的建议!!但是这样拆分服务器有什么好处吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
相关资源
最近更新 更多