Una forma para realizar comunicación entre los prims internos de OpenSimulator o Second Life y el mundo externo es a través del uso de XML-RPC el cual permite enviar mensajes a un objeto dentro de una región, siempre y cuando este se haya registrado para recibir dicha comunicación.
Crear Script para Recibir Datos :
default { state_entry() { llOpenRemoteDataChannel(); } remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval) { if(type == REMOTE_DATA_CHANNEL) { llOwnerSay("Canal : " + (string) channel + ""); } else if(type == REMOTE_DATA_REQUEST) { llRemoteDataReply(channel,NULL_KEY,"Exito",1221); llOwnerSay("Cadena : " + sval + "nNumero: " + (string) ival); } else { llOwnerSay("Error"); } } }
Enviar Datos con C# :
Se utilizara la libreria XmlRpcCS para realizar la comunicación entre la aplicación y el objeto en OpenSimulator o SecondLife.
using System.Collections; using Nwc.XmlRpc; public class Client { public static void Main() { // Informacion del Servidor de Second Life // Canal por donde escucha el cliente string server = "http://xmlrpc.secondlife.com/cgi-bin/xmlrpc.cgi"; string channel = "eafc58de-5d8a-364e-d6d8-4c4cab0129f4"; // Parametros Hashtable args = new Hashtable(); args.Add("Channel",channel); args.Add("IntValue",12345); args.Add("StringValue","Hello World!"); // Cliente XMLRPC XmlRpcRequest request = new XmlRpcRequest(); request.MethodName = "llRemoteData"; request.Params.Add(args); // Invocacion y Resultado Hashtable ret = (Hashtable) request.Invoke(server); System.Console.WriteLine(ret["StringValue"]); System.Console.WriteLine(ret["IntValue"]); } }
Para usar el mismo codigo con OpenSimulator la cadena server debe tener la direccion de nuestro servidor : http://<ipServidor>:<puerto>/cgi-bin/xmlrpc.cgi
Enlaces :
Actualmente algunos sistemas como OpenSimulator o Second Life utilizan servicios remotos basados en XML-RPC, por tal motivo es necesario utilizar una libreria para realizar los llamados a estos servicios, actualmente para Microsoft .NET podemos encontrar dos librerias :
Utilizaremos la libreria XmlRpcCS, la cual es utilizada por el proyecto OpenSimulator para implementar el servicio de XMLRPC que permite realizar llamados remotos a objetos en este mundo virtual.
Requerimientos :
Construcción de la Libreria :
Enlaces :