Ruby IP Server&Client - exchange data between exe/vst
Posted: Wed Jan 08, 2014 4:08 pm
Hello!
One of my latest milestones to the goal was to develope an addon for the FlowStones Network components. I hope DSP-Robotics will do some improovements on them in future to get them save and stable.
Will first i had do develope a new comunication system (Just imagine that you have to pass on all data through one string link and this live)
So what does it?
You will be able to exchange data betweeen 2 Programms via LAN or also local on your PC
You will be able to exchange data betweeen EXEs, VSTs and Schematics at the same time!
You are able to exchange completly ruby-objects
The Data is stored on Client and Server and will only sync if the data has been changed
Advanteges of the normal Flowstone Modules?
IP:Port or DNS:Port or only IP or only Port are supported - a DNS Lookup is done at clientstart
Every Client gets its own unique ID number (0-255 are fixed - 256-65535 for startuprandom)
some extra settings
What is done internal:
* Server starts
* Clients connects with a random ID between 256-65535
* Server fixes the ID to comunicate with different clients at the same time (ID 0-255 counted from 0)
* Clients stores ID and usis it the complet session till disconect
What is done internal with data?
The ruby objects are queued up in an array - an extra procedure takes each object and exports it as Bin-String.
The Bin-String is splitted each 252 bytes and gets the protocolfunctions. After that the complet Data-Load is sended through the LAN to the reciver that splits up the data and loads it back to ruby - if something went wrong the sender will send brocken data again.
Why useable?
Well the Server is now logical able hande up to 255 clients at the same time - Windows PC-Systems will stop at 10 ^^
every client will get the same data - you may not do anything more here
This thing is now the new Variable-Server that i made some months ago.
And YES - As i told above - you are able with it to exchange data also between 2 seperat programms
To get this all i did a verry simple one shown here with HEX data: (Updated V1.1)
I'll post new developements on this soon - but i think it is now stable
Kind regards
C.Hackl
One of my latest milestones to the goal was to develope an addon for the FlowStones Network components. I hope DSP-Robotics will do some improovements on them in future to get them save and stable.
Will first i had do develope a new comunication system (Just imagine that you have to pass on all data through one string link and this live)
So what does it?
You will be able to exchange data betweeen 2 Programms via LAN or also local on your PC
You will be able to exchange data betweeen EXEs, VSTs and Schematics at the same time!
You are able to exchange completly ruby-objects
The Data is stored on Client and Server and will only sync if the data has been changed
Advanteges of the normal Flowstone Modules?
IP:Port or DNS:Port or only IP or only Port are supported - a DNS Lookup is done at clientstart
Every Client gets its own unique ID number (0-255 are fixed - 256-65535 for startuprandom)
some extra settings
What is done internal:
* Server starts
* Clients connects with a random ID between 256-65535
* Server fixes the ID to comunicate with different clients at the same time (ID 0-255 counted from 0)
* Clients stores ID and usis it the complet session till disconect
What is done internal with data?
The ruby objects are queued up in an array - an extra procedure takes each object and exports it as Bin-String.
The Bin-String is splitted each 252 bytes and gets the protocolfunctions. After that the complet Data-Load is sended through the LAN to the reciver that splits up the data and loads it back to ruby - if something went wrong the sender will send brocken data again.
Why useable?
Well the Server is now logical able hande up to 255 clients at the same time - Windows PC-Systems will stop at 10 ^^
every client will get the same data - you may not do anything more here
This thing is now the new Variable-Server that i made some months ago.
And YES - As i told above - you are able with it to exchange data also between 2 seperat programms
To get this all i did a verry simple one shown here with HEX data: (Updated V1.1)
Code: Select all
XX XX - XX - XXXXXX...XX - XX
srvID - function - Datablock - Endsequence
Funktions:
F0 ... Start a new dataframe
F1 ... continue with old dataframe
F2 ... Framecheck was OK
F3 ... Framecheck went wrong
A0 ... Request new IP
A1 ... New ID in Datablock
A5 ... Check Client (Ping)
A6 ... Client OK (Ping)
A9 ... Client will exit now
Endsequences:
E0 ... Dataframe done
E1 ... Wait for next DatablockI'll post new developements on this soon - but i think it is now stable
Kind regards
C.Hackl