You can send a single integer and a single 255 character string on each transmission. The sending uses llHTTPRequest and is subject to throttling. The sending object must know the current XML-RPC channel of the receiving object.
LSL Script:
CODE
key xmlrpcchan;
string url = "http://www.yourwebsite.com/yourphpfile.php";
default {
state_entry()
{
llOpenRemoteDataChannel();
}
remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval)
{
if (type == REMOTE_DATA_CHANNEL) {
xmlrpcchan = channel;
llOwnerSay("Ready. Touch to send.");
} else {
llOwnerSay("Integer Sent: " + (string)ival);
llOwnerSay("String Sent: " + sval);
}
}
touch_start(integer num)
{
//In this example, the sender and reciever are the same script
string chan = (string)xmlrpcchan;
integer int = 123456;
string message = "Hello world!";
llHTTPRequest(url, [HTTP_METHOD, "POST"], "chan=" + chan + "&int=" + (string)int + "&str=" + message);
}
http_response(key id, integer status, list metadata, string body)
{
if (id == NULL_KEY) {
llOwnerSay("HTTPRequest was throttled. Please wait then try again.");
}
}
on_rez(integer param)
{
llResetScript();
}
}
PHP Script to be placed on your server
CODE
<?php
function sendRequest($channel, $intValue, $stringValue) {
$channel = htmlspecialchars($channel);
$int = (int)$intValue;
$string = htmlspecialchars($stringValue);
$data = '<?xml version="1.0"?>';
$data .= '<methodCall>';
$data .= '<methodName>llRemoteData</methodName>';
$data .= '<params><param><value><struct>';
$data .= '<member><name>Channel</name><value><string>'.$channel.'</string></value></member>';
$data .= '<member><name>IntValue</name><value><int>'.$int.'</int></value></member>';
$data .= '<member><name>StringValue</name><value><string>'.$string.'</string></value></member>';
$data .= '</struct></value></param></params></methodCall>';
$fp = fsockopen("xmlrpc.secondlife.com", 80);
fputs($fp, "POST /cgi-bin/xmlrpc.cgi HTTP/1.1\r\n");
fputs($fp, "Host: xmlrpc.secondlife.com\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
fclose($fp);
return;
}
$p_data = implode('', file('php://input'));
$p_data = explode('&', $p_data);
foreach ($p_data as $p_val) {
$d_parts = explode('=', $p_val);
$_POST[$d_parts[0]] = urldecode($d_parts[1]);
}
if ($_POST["chan"] != "") {
sendRequest($_POST["chan"], $_POST["int"], $_POST["str"]);
}
?>