关闭

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

1069人阅读 评论(0) 收藏 举报
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, 3RELIABLE_ORDERED - 1, 2, 3, 4, 5, 6
第五个参数,通常选择为0,不是很重要。
第六个参数,接收者的ID,直接用UNASSIGNED_PLAYER_ID 进行设置。
第七个参数,是否广播,有两个参数010表示不广播,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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:44023次
    • 积分:663
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论