added variable length receiving and sending

This commit is contained in:
Aryan Singh committed 2026-09-12 11:11:49 -05:00
1 parent 532a80fddd
commit 5e596bdef7
2 files changed
+45 -5

No files matched your search

+22 -2
View File
@@ -15,6 +15,26 @@ ALL_IPS = [
"172.22.156.6"
]
def send_message(sock, message):
e_data = message.encode('utf-8')
#header for the message length
header = str(len(e_data)).zfill(10).encode('utf-8')
sock.sendall(header)
sock.sendall(e_data)
def receive_message(sock):
header = sock.recv(10)
if not header:
return None
message_length = int(header.decode('utf-8'))
received_data = b""
while len(received_data) < message_length:
chunk = sock.recv(65536)
if not chunk:
break
received_data += chunk
return received_data.decode('utf-8')
def grep_all_ips(ips, cmd):
match_count = []
@@ -26,8 +46,8 @@ def grep_all_ips(ips, cmd):
full_cmd = cmd + f" ./machine.{i + 1}.log"
client_socket.sendall(full_cmd.encode())
data = client_socket.recv(65536).decode()
send_message(client_socket, full_cmd)
data = receive_message(client_socket)
count = len(data.splitlines())
match_count.append(count)
+23 -3
View File
@@ -13,11 +13,31 @@ server_socket.listen()
print(f"Server listening on {HOST}:{PORT}")
def send_message(sock, message):
e_data = message.encode('utf-8')
#header for the message length
header = str(len(e_data)).zfill(10).encode('utf-8')
sock.sendall(header)
sock.sendall(e_data)
def receive_message(sock):
header = sock.recv(10)
if not header:
return None
message_length = int(header.decode('utf-8'))
received_data = b""
while len(received_data) < message_length:
chunk = sock.recv(65536)
if not chunk:
break
received_data += chunk
return received_data.decode('utf-8')
while True:
conn, addr = server_socket.accept()
print(f"Connected by {addr}")
command = conn.recv(65536)
command = receive_message(conn)
# print("Received Grep Command:", command.decode())
command_args = shlex.split(command.decode())
@@ -32,8 +52,8 @@ while True:
result = subprocess.run(command_args, capture_output=True, text=True)
conn.sendall(result.stdout.encode())
send_message(conn, result.stdout)
conn.close()
server_socket.close()
server_socket.close()