设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 神思

[原创发布] RM的SOCKET

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
帖子
1795

开拓者

发表于 2011-8-9 22:17:25 | 显示全部楼层
成了!VB.NET<=>RM
SOC.jpg
( ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ ω ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้【看猫君玩,我也搞一只】)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

 楼主| 发表于 2011-8-10 10:14:23 | 显示全部楼层
哈哈,能用就行,,
昨天没干活,,今晚继续RakNet To RM
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
155
在线时间
230 小时
注册时间
2009-7-2
帖子
204
发表于 2011-8-10 10:25:58 | 显示全部楼层
这个不是很早很早就有了吗~~~
回复 支持 反对

使用道具 举报

乌有君
乌有君  发表于 2011-8-10 10:27:16
于是很顺利地诱拐了思思去玩RAKNET~\(≧▽≦)/~

点评

XD说不定会拉上小蛇子你一起干这苦力活。。  发表于 2011-8-10 10:49
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

 楼主| 发表于 2011-8-10 10:46:35 | 显示全部楼层
晴. 发表于 2011-8-10 10:25
这个不是很早很早就有了吗~~~

嗯,我看过已个直接用ws2_32.dll 这玩意的。。。没怎么看,貌似是一直select拿的数据?
我这个有点不同的:)
-.-
回复 支持 反对

使用道具 举报

乌有君
乌有君  发表于 2011-8-10 11:18:57
本帖最后由 匿名 于 2011-8-10 11:29 编辑

  1. #include <windows.h>
  2. #include <string.h>

  3. #include "RakPeerInterface.h"
  4. #include "RakNetworkFactory.h"
  5. #include "MessageIdentifiers.h"

  6. #include <fstream>

  7. using namespace std;

  8. SocketDescriptor g_sdp(5417,0);
  9. SocketDescriptor g_sdp2(5418,0);
  10. RakPeerInterface *rakPeer1;
  11. RakPeerInterface *rakPeer2;

  12. struct SATalkingMessage
  13. {
  14.         unsigned char messageID;
  15.         //char* str;
  16.         char str[512];
  17. };



  18. ///////////////////////////////////////////////////////////////////////////////////////////


  19. int   InitialServer()
  20. {
  21.         rakPeer1 = RakNetworkFactory::GetRakPeerInterface();
  22.         rakPeer1->Startup(8,30,&g_sdp,1);
  23.         rakPeer1->SetMaximumIncomingConnections(8);
  24.         return 1;
  25. }




  26. void    ServerGetPacket(char  iner[])
  27. {
  28.    Packet *packet = rakPeer1->Receive();
  29.    if(packet)
  30.    {
  31.            if(packet->data[0] == ID_USER_PACKET_ENUM)
  32.            {
  33.                    sprintf(iner,"%s::%s",packet->systemAddress.ToString(),packet->data+1);
  34.            }
  35.            else if(packet->data[0] == ID_NEW_INCOMING_CONNECTION)
  36.            {
  37.                         //Welcome~~~~~~~~
  38.                         sprintf(iner,"%s::RN_newing",packet->systemAddress.ToString());
  39.            }
  40.            else if(packet->data[0] == ID_CONNECTION_LOST || packet->data[0] == ID_DISCONNECTION_NOTIFICATION)
  41.            {
  42.                         sprintf(iner,"%s::RN_disconnect",packet->systemAddress.ToString());
  43.            }
  44.            rakPeer1->DeallocatePacket(packet);
  45.    }
  46.    return;
  47. }

  48. int  ServerSend(char* messagetest,int type)
  49. {
  50.         SATalkingMessage message;
  51.         message.messageID = ID_USER_PACKET_ENUM;
  52.         strcpy(message.str,messagetest);
  53.     rakPeer1->Send((char*)&message,sizeof(message),HIGH_PRIORITY,(PacketReliability)type,0,UNASSIGNED_SYSTEM_ADDRESS,true);
  54.         return 1;
  55. }

  56. void  CloseServer()
  57. {
  58.    RakNetworkFactory::DestroyRakPeerInterface(rakPeer1);
  59. }


  60. int ServerConnectionCount(void)
  61. {
  62.         int i,count;
  63.         for (i=0,count=0; i < 8;i++)
  64.         {
  65.                 if (rakPeer1->GetSystemAddressFromIndex(i) != UNASSIGNED_SYSTEM_ADDRESS)
  66.                 {
  67.                         count++;
  68.                 }
  69.         }
  70.         return count;
  71. }
  72. ///////////////////////////////////////////////////////////////////////////////////////////
  73. int InitialClient()
  74. {
  75.         rakPeer2 = RakNetworkFactory::GetRakPeerInterface();
  76.         rakPeer2->Startup(8,30,&g_sdp2,1);
  77.         return 1;
  78. }

  79. int  ClientConnect(char* host)
  80. {
  81.         rakPeer2->Connect(host,5417,0,0,0);
  82.         while(1)
  83.         {
  84.       Packet *packet = rakPeer2->Receive();
  85.           if(packet)
  86.           {
  87.                 if(packet->data[0] == ID_CONNECTION_REQUEST_ACCEPTED)
  88.                 {
  89.                         //We connect target yada!
  90.                         rakPeer2->DeallocatePacket(packet);
  91.                         return 1;
  92.                 }
  93.                 else if(packet->data[0] == ID_CONNECTION_ATTEMPT_FAILED)
  94.                 {
  95.                         //We failed to connect...
  96.                         rakPeer2->DeallocatePacket(packet);
  97.                         return 0;
  98.                 }
  99.                 else if(packet->data[0] == ID_ALREADY_CONNECTED)
  100.                 {
  101.                         // We already connected!!!
  102.                         rakPeer2->DeallocatePacket(packet);
  103.                         return 2;
  104.                 }
  105.                 else if(packet->data[0] == ID_NO_FREE_INCOMING_CONNECTIONS)
  106.                 {
  107.                         // the server is full!
  108.                         rakPeer2->DeallocatePacket(packet);
  109.                         return 4;
  110.                 }
  111.                 rakPeer2->DeallocatePacket(packet);
  112.           }
  113.         }
  114.         return 0;
  115. }

  116.   int  ClientSend(char* messagetest,int type)
  117. {
  118.         SATalkingMessage message;
  119.         message.messageID = ID_USER_PACKET_ENUM;
  120.         strcpy(message.str,messagetest);
  121.         rakPeer2->Send((char*)&message,sizeof(message),HIGH_PRIORITY,(PacketReliability)type,0,UNASSIGNED_SYSTEM_ADDRESS,true);
  122.         return 1;
  123. }

  124. void SearchforServer()
  125. {
  126.           rakPeer2->Ping("255.255.255.255",5417,true);
  127. }

  128. void    ClientGetPacket(char  iner[])
  129.   {
  130.           Packet *packet = rakPeer2->Receive();
  131.           if(packet)
  132.           {
  133.                   if(packet->data[0] == ID_USER_PACKET_ENUM)
  134.                   {
  135.                           sprintf(iner,"%s::%s",packet->systemAddress.ToString(),packet->data+1);
  136.                   }
  137.                   else if(packet->data[0] == ID_CONNECTION_LOST || packet->data[0] == ID_DISCONNECTION_NOTIFICATION)
  138.                   {
  139.                           sprintf(iner,"%s::RN_disconnect",packet->systemAddress.ToString());
  140.                   }
  141.                   else if(packet->data[0] == ID_PONG)
  142.                   {
  143.                           sprintf(iner,"%s::RN_PONG",packet->systemAddress.ToString());
  144.                   }
  145.                   rakPeer2->DeallocatePacket(packet);
  146.           }
  147.           return;
  148.   }

  149. int  ClientDisConnect()
  150. {
  151.         rakPeer2->CloseConnection(rakPeer2->GetSystemAddressFromIndex(0),true,0);
  152.         return 1;
  153. }

  154. int  CloseClient()
  155. {
  156.          RakNetworkFactory::DestroyRakPeerInterface(rakPeer2);
  157.          return 1;
  158. }

  159. ///////////////////////////////////////////////////////////////////////////////////////////
  160. void DonotGCme()
  161. {
  162. }

  163. void ClientGetMyIP(char  iner[])
  164. {
  165.         sprintf(iner,"%s",rakPeer2->GetLocalIP(0));
  166. }
  167. void SeverGetMyIP(char iner[])
  168. {
  169.         sprintf(iner,"%s",rakPeer1->GetLocalIP(0));
  170. }

  171. ///////////////////////////////////////////////////////////////////////////////////////////

  172. BOOL APIENTRY DllMain( HANDLE hModule,
  173.                                           DWORD  ul_reason_for_call,
  174.                                           LPVOID lpReserved
  175.                                           )
  176. {
  177.         return TRUE;
  178. }
复制代码
于是偶果断把去年寒假的蛋痛物挖出来了。

RM的部分在
http://www.diyrpg.net/forum.php? ... st%3D1%26digest%3D1

后来更新过一次补上了自动搜索局域网主机神马的。
没把战斗同步和某些安全问题填完就去轰杀GRE和托福了,于是那些一直坑着 囧

那个……那个……明明那个时候思思就在那个帖子里的啊 囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

CHAOS

梦石
0
星屑
64
在线时间
241 小时
注册时间
2005-11-4
帖子
3518

贵宾

发表于 2011-8-10 11:33:32 | 显示全部楼层
能写SOCKET了,谁还用RM啊……
梦想世界,在你伸手!
回复 支持 反对

使用道具 举报

乌有君
乌有君  发表于 2011-8-10 11:34:48
CHAOCHAO诈尸了啊
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
768
在线时间
3018 小时
注册时间
2007-3-16
帖子
33724

开拓者贵宾

发表于 2011-8-10 11:39:43 | 显示全部楼层
精灵想把这个发配到技术区。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

 楼主| 发表于 2011-8-10 11:51:31 | 显示全部楼层
我想让人能在RM里使用原生RakNet,
只封装浅浅的一层就够了。
-.-
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2020-8-11 02:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表