我正在为Android平台统一制作Checkers游戏。 我被赋予使该游戏成为多人游戏并以C#语言实现TCP / IP网络的任务,而对于服务器端,我必须使用Golang。 我几乎完成了游戏本身,但对服务器和tcp以及如何为我的游戏实现它们一无所知。
有什么方法可以启动该程序或教程以显示如何执行该操作?
任何建议都会很棒!
提前致谢!


好的,您正在尝试构建应用程序的服务器-客户端通信。当我们谈论交流时,总会出现一个关键字:套接字。简而言之,套接字允许同一或不同机器上的两个不同进程之间进行通信。插座有不同的类型,您可以在此处和此处检查其中一些插座的区别。

要建立通信通道,客户端需要执行以下步骤:

  • 通过socket()系统调用创建套接字。
  • 使用connect()系统调用将套接字连接到服务器地址。
  • 通过read()和write()发送和接收数据。
  • 在服务器端是:

  • 通过socket()系统调用创建套接字。
  • 使用bind()系统调用将套接字绑定到一个地址(例如ip:port)。
  • 使用listen()系统调用监听连接。
  • 接受与accept()系统调用的连接。
  • 通过read()和write()发送和接收数据。
  • 通常,在服务器端要创建一个套接字池,以实现更高的性能(而不是为连接到服务器的每个播放器创建一个新的套接字)。

    查看下面的图像,以查看服务器和客户端之间的交互流程如何。在您的情况下,请求是从玩家发送到服务器的带有游戏信息的消息(例如,玩家轮流进行的移动)。从服务器到玩家的消息可以只是一个ACK,也可以是更详细的信息(例如,对手轮流做出的举动)。

    enter image description here

    现在,数据传输:由于Internet只能处理位并且不了解对象或结构是什么,因此当消息出入Internet或从Internet到达时,我们必须对消息进行序列化和反序列化。要轻松实现此目的,您可以使用协议缓冲区,这是Google叔叔开发的工具,可简化此过程,并且可以由其他语言(例如Go和C#)使用。

    下面以一些示例说明如何分别在Go和C#中构建服务器-客户端应用程序。然后,您可以选择项目所需的部分:

    • 客户端-服务器Go
    • Client-server_2 Go
    • 客户端和服务器C#

    希望能有所帮助!