2 from __future__
import print_function
12 client_socket_timeout = 6
13 max_msg_length = 2000000
15 rosbridge_ip =
"localhost" 18 service_name =
"send_bytes" 19 request_byte_count = 500000
20 receiving_fragment_size = 1000
21 receive_message_intervall = 0.0
29 service_request_object = {
"op" :
"call_service",
30 "service":
"/"+service_name,
31 "fragment_size": receiving_fragment_size,
32 "message_intervall": receive_message_intervall,
33 "args": {
"count" : request_byte_count
36 service_request = json.dumps(service_request_object)
37 print(
"sending JSON-message to rosbridge:", service_request)
38 sock.send(service_request)
47 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
48 sock.settimeout(client_socket_timeout)
49 sock.connect((rosbridge_ip, rosbridge_port))
60 incoming = sock.recv(max_msg_length)
64 print(
"closing socket")
68 buffer = buffer + incoming
71 data_object = json.loads(buffer)
72 if data_object[
"op"] ==
"service_response":
73 reconstructed = buffer
75 except Exception
as e:
81 result_string = buffer.split(
"}{")
83 for fragment
in result_string:
84 if fragment[0] !=
"{":
85 fragment =
"{"+fragment
86 if fragment[len(fragment)-1] !=
"}":
87 fragment = fragment +
"}" 89 result.append(json.loads(fragment))
90 except Exception
as e:
95 fragment_count = len(result)
96 print(
"fragment_count:", fragment_count)
97 announced = int(result[0][
"total"])
98 if fragment_count == announced:
100 sorted_result = [
None] * fragment_count
102 for fragment
in result:
103 unsorted_result.append(fragment)
104 sorted_result[int(fragment[
"num"])] = fragment
106 for fragment
in sorted_result:
107 reconstructed = reconstructed + fragment[
"data"]
109 except Exception
as e:
112 except Exception
as e:
117 returned_data = json.loads(reconstructed)
118 if returned_data[
"values"] ==
None:
119 print(
"response was None -> service was not available")
122 print(returned_data[
"values"][
"data"].
decode(
'base64',
'strict'))
124 except Exception
as e:
125 print(
"ERROR - could not receive service_response")