Sending Image over UDP in godot

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By humbletang

Hi there,

I’m trying to see what sending an image to a PacketPeerUDP looks like in godot. I have a server which captures a Camera’s view of a scene as a PoolByteArray and then attempts to put that data to a client PacketPeerUDP but I don’t usually see the client respond even with simple length of received byte checks.

Server Node

extends Node

var server := UDPServer.new()
var peers = []

func _ready():
	server.listen(4242)

var step = 0
func _process(delta):
	server.poll() # Important!
	if server.is_connection_available():
		var peer : PacketPeerUDP = server.take_connection()
		var pkt = peer.get_packet()
		print("Accepted peer: %s:%s" % [peer.get_packet_ip(), peer.get_packet_port()])
		print("Received data: %s" % [pkt.get_string_from_utf8()])
		# Reply so it knows we received the message.
		peer.put_packet(pkt)
		# Keep a reference so we can keep contacting the remote peer.
		peers.append(peer)
	step +=1
	if step %100==0:
		step =0
		for i in range(0, peers.size()):
			var peer = peers[i]
			if peer.get_available_packet_count()>0:
				print("peer alive")
				
				var pkt = peer.get_packet()
				
				print("Accepted peer: %s:%s" % [peer.get_packet_ip(), peer.get_packet_port()])
				print("Received data: %s" % [pkt.get_string_from_utf8()])
				# Reply so it knows we received the message.
				var im_data = get_viewport().get_texture().get_data().get_data()

				print(len(im_data))
				var cursor = 0
				var step = 20
				while cursor < len(im_data):
					peer.put_packet(im_data.subarray(cursor,cursor+step))
					cursor +=step
			pass # Do something with the connected peers.

Client Node

# client.gd
extends Node

var udp := PacketPeerUDP.new()
var connected = false

func _ready():
	udp.connect_to_host("127.0.0.1", 4242)

func _process(delta):
	
	if udp.get_available_packet_count() > 0:
		print("message back")
		print("num packets",udp.get_available_packet_count())
		print(len(udp.get_packet()))
		
		connected = true


func _on_Button_button_down():
	udp.put_packet("The answer is... 42!".to_utf8())
	pass # Replace with function body.

https://forum.godotengine.org/49573/how-to-capture-the-camera-image-and-send-it-over-udp?show=49573#q49573