added variable length receiving and sending
This commit is contained in:
1 parent
532a80fddd
commit
5e596bdef7
2 files changed
+45
-5
No files matched your search
+23
-3
@@ -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()
|
||||
Reference in new issue
Block a user