Created
March 12, 2014 14:59
-
-
Save bibby/9508670 to your computer and use it in GitHub Desktop.
gd sockets.. y u no write?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extends Panel | |
export(String) var host = "localhost" | |
export(int) var port = 7777 | |
export(bool) var autoConnect = true | |
var Socket = preload("socket.gd") | |
var socket | |
func _init(): | |
socket = Socket.new() | |
if(autoConnect): | |
sockConnect() | |
get_node(get_path()).connect("sock.recv", self, "_receive") | |
connect("sock.err", self, "_err") | |
func _ready(): | |
get_node("Button").connect("pressed", self, "onButtonPress") | |
func onButtonPress(): | |
var node = get_node("Input") | |
var input = node.get_text() | |
node.set_text("") | |
socket.write(input) | |
func sockConnect(): | |
socket.connect(host, port) | |
func sockDisconnect(): | |
socket.disconnect() | |
func write(string): | |
socket.write(string) | |
func _receive(string): | |
print("Received ", string) | |
func _err(string): | |
print("SOCK_ERR ", string) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var socket = StreamPeerTCP.new() | |
var _accum = 0 # delta accumulator | |
var _active = false # socket intended for use | |
var _connected = false # socket is connected | |
const ERR = 1 | |
func _ready(): | |
set_process(true) | |
func _process(delta): | |
_readloop(delta) | |
### | |
### Server doesn't receive the string | |
### | |
func write(string): | |
if(_connected): | |
socket.write(_string_to_raw_array(string)) | |
func connect(host, port): | |
_active = true | |
var err = socket.connect(host, port) | |
_connected = socket.is_connected() | |
return err | |
func disconnect(): | |
_active = false | |
_connected = false | |
socket.disconnect() | |
func _readloop(delta): | |
if(not _active): | |
pass | |
# TODO, emit errors and data | |
_accum += delta | |
if(_accum > 1): | |
_accum = 0 | |
var connected = socket.is_connected() | |
if(not connected): | |
_respond("Lost Connection", ERR) | |
else: | |
var output = socket.get_partial_data(1024) | |
var errCode = output[0] | |
var outputData = output[1] | |
if(errCode != 0): | |
_respond( "ErrCode:" + str(errCode), ERR) | |
else: | |
var outStr = outputData.get_string_from_utf8() | |
if(outStr != ""): | |
_respond( outStr, 0 ) | |
func _respond(msg, errCode): | |
if(errCode == 0): | |
_respondOK(msg) | |
elif(errCode == ERR): | |
_respondErr(msg) | |
func _respondOK(msg): | |
emit_signal("sock.recv", msg) | |
func _respondErr(msg): | |
emit_signal("sock.err", msg) | |
func _string_to_raw_array(string): | |
var len = string.length() | |
var raw = RawArray() | |
var i=0 | |
while(i<len): | |
raw.push_back( string.ord_at(i) ) | |
i=i+1 | |
return raw |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
I have try this code but i have this error ''Attempt to connect to unexisting signal : sock.recv'
what's wrong ?
thank's