网络游戏如何让客户端和服务器进行通信?(四)

网络游戏如何让客户端和服务器进行通信?(四)

好吧,实际上我已经知道你等不及了,所以让我们开始吧。

程序代码与《2D网络游戏开发(在线篇)(四)》中的相同,只是我们需要在其中添加一些内容。

在进入循环之前,我们需要定义一个消息变量来存储我们将发送的消息。

字符消息[2048];

进入循环并在循环开头添加以下代码,然后再接收信息:

如果(kbhit())

获取(消息);

if(rak服务器接口)

rakServerInterface->发送(消息, (const int) strlen(消息)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_PLAYER_ID, true);

别的

rakClientInterface->发送(消息, (int) strlen(消息)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0);

好了,我们来分析一下上面的代码。

kbhit()用于监听是否有按键按下。 如果没有,先获取信息,保存在消息中,然后监控你是构建服务器还是客户端。

如果是服务器,则使用服务器发送数据,否则使用客户端发送数据。

让我们仔细看看服务器的 send() 函数:

第一个参数指向你要发送的数据;

第二个参数是您发送的数据的大小。 也许你会问,为什么要加1呢? 那是因为我们的数据是以数据流的形式发送的网络游戏开发,如果数据之间不留空格,网络引擎就无法区分数据,所以我们必须在每个数据后面加一个空格。 这相当于将一根电线切成几段。

第三个参数用于设置您发送的数据的重要性。 一共有三个参数:

高优先级

MEDIUM_PRIORITY

低优先级

它们的重要性分为高、中、低。 网络引擎发送数据时,首先要对数据进行排队,按照重要性发送。 重要性较高的先发送,否则后发送。

第四个参数,可靠性,有五个参数:

不可靠 - 5、1、6

UNRELIABLE_SEQUENCED - 5

可靠 - 5、1、4、6、2、3

RELIABLE_ORDERED - 1、2、3、4、5、6

RELIABLE_SEQUENCED - 5、6

可靠性是什么意思? 也就是说,当网络引擎发送数据时,如果选择可靠地发送数据,那么数据会按正确的顺序到达,但如果选择不可靠,那么数据可能会不间断地到达。

常用的是 RELIABLE - 5, 1, 4, 6, 2, 3 和 RELIABLE_ORDERED - 1, 2, 3, 4, 5, 6。

第五个参数通常选择0,不是很重要。

第六个参数,接收者的ID网络游戏开发,直接用UNASSIGNED_PLAYER_ID设置。

第七个参数,是否广播,有两个参数0和1。0表示不广播,1表示向所有连接到服务器的客户端发送此信息。

rakClientInterface的send函数与服务器端的参数相同,只是缺少了最后两个。

最后我们要修改以下内容:

存在

默认:

下面游戏图片,修改程序如下:

printf("%sn", 数据包->数据);

if(rak服务器接口)

sprintf(消息,"%s",数据包->数据);

rakServerInterface->发送(消息, (const int) strlen(消息)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_PLAYER_ID, true);

第一条语句打印我们收到的数据;

如果我们正在构建一个服务器3D动画,那么我们会将接收到的数据转换为char格式(因为packet->data的数据格式是unsigned char),然后将这个数据广播给服务器中的所有客户端。

至此,我们的程序就完成了,运行效果如下:

服务器:

网络游戏开发_开发网络游戏需要多少钱_开发网络游戏创造价值吗

图例1

客户1:

开发网络游戏创造价值吗_网络游戏开发_开发网络游戏需要多少钱

传奇2

客户2

开发网络游戏需要多少钱_开发网络游戏创造价值吗_网络游戏开发

传奇3

好了,今天就到这里了,祝大家周末愉快,玩得开心!

欲了解更多信息,请访问金桥科普网游戏开发版块()。 如果您需要游戏开发方面的书籍,请参考金桥书店游戏频道()。 如果您在阅读本文时有什么好的建议,请写信给我,我的E_mail: 。 如果您在使用SDL时遇到任何问题,请到金桥科普网游戏开发版块(),我会详细帮助您。 回答。

文章来源:https://blog.csdn.net/akinggw/article/details/820768