Yes, you need to use the GIP plugin for this.
If you just want to send then it's fairly straightforward, if you want to receive data back from the projector then it's a little more complex, but not too bad really.
Suppose that the projector is on IP address 192.168.0.5 and the port is 1234 then you'd open the port using
Code:
local socket = gip.Open('192.168.0.5', 1234)
if socket then
-- this should be okay, strictly speaking you should install a callback to check that the connection was made successfully
socket:Write('some string')
end
See the manual for the gip library for full details and post here if you need any more help.
What projector is it?
By the way, there is an alternative way to do this using a 'serial' device, at least in Girder 4.0.6 and up. It does mean creating the device manually, since there is no DUI support for it yet, but the new serial.Classes.Queued2 device class does support either a serial or IP transport layer. This has the advantage that you should be able to use the DUI actions to send to the projector.