如何在Golang中的C#和Server中编写Tcp / ip网络以实现统一的多人跳棋游戏

She*_*dkh -2 c# tcp multiplayer go unity-game-engine

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

小智 5

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

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

  1. 通过socket()系统调用创建套接字。
  2. 使用connect()系统调用将套接字连接到服务器地址。
  3. 通过read()write()发送和接收数据。

在服务器端是:

  1. 通过socket()系统调用创建套接字。
  2. 使用bind()系统调用将套接字绑定到一个地址(例如ip:port)。
  3. 使用listen()系统调用监听连接。
  4. 接受与accept()系统调用的连接。
  5. 通过read()write()发送和接收数据。

通常,在服务器端要创建一个套接字池,以实现更高的性能(而不是为连接到服务器的每个播放器创建一个新的套接字)。

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

在此处输入图片说明

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

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

希望能有所帮助!