2D网络游戏开发(网络篇)(五)

2D网络游戏开发(网络篇)(五)
 
作者:akinggw
 
在第四篇中,我们学习了如何使用raknet进行服务器和客户端的连接,在这一篇中,我们将讲解如何让客户端和服务器进行通信,比如说聊天。
好吧,其实我已经知道你等不及了,那就让我们开始吧。
程序代码和“2D网络游戏开发(网络篇)(四)”中的一样,只是我们需要在其中添加一些内容。
在进入循环之前,我们需要定义一个信息变量,用于存储我们将要发送的信息。
    char message[2048];
 
进入循环,在循环开始处,也就是接收信息之前,添加下面代码:
 
if(kbhit())
 { 
 gets(message);
        
 if(rakServerInterface)
    {
     rakServerInterface->Send(message, (const int) strlen(message)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_PLAYER_ID, true);
     }
 else
    {
     rakClientInterface->Send(message, (int) strlen(message)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0);
     }
 }
 
好吧,让我们来分析一下上面这段代码。
kbhit()用于监测是否有按键,如果没有,先得到信息,保存在message中,然后监测你建立的是服务器还是客户端。
如果是服务器,就用服务器发送数据,相反就用客户端发送数据。
下面我们来具体分析一下服务器的send()函数:
第一个参数,指向你要发送的数据;
第二个参数,你发送的数据的大小,也许你就会问,为什么要加一个1呢?那是因为我们的数据都是按照数据流发送的,如果你不在数据之间留下空格,网络引擎就无法分辨出数据,所以我们要在每个数据之后加上一个空格。也就相当于把一根线切成一截一截的。
第三个参数,用于设置你发送数据的重要性,一共有三个参数:
 
HIGH_PRIORITY
MEDIUM_PRIORITY
LOW_PRIORITY
 
分别是重要性高,中,底。网络引擎在发送数据时,首先要将数据排队,按照他的重要性来发送,重要性高的先发送,否则就后发。
第四个参数,可靠性,一个有五个参数:
UNRELIABLE - 5, 1, 6
UNRELIABLE_SEQUENCED - 5
RELIABLE - 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函数和服务端的参数是一样的,只是少了最后的两个。
 
最后,我们还得修改下面的内容:
default:
之下,将程序修改成如下:
   printf("%sn", packet->data);
                   
 if(rakServerInterface)
 {
     sprintf(message,"%s",packet->data);    
      rakServerInterface->Send(message, (const int) strlen(message)+1, HIGH_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_PLAYER_ID, true);              
  }
 
第一条语句是打印我们收到的数据;
如果我们建立的是服务器,那么就将我们接收到的数据转换成char格式,(因为packet->data的数据格式是unsigned char),然后将这条数据广播给服务器中所有的客户端。
 
到这里,我们的程序完成,运行效果如下:
服务器:

 

 
图注1
客户端1:
 
图注2
客户端2
 
图注3
OK,今天的内容就到这里了,祝你们周末玩得高兴,玩得愉快!
 

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值