'Python socket send Data frame :Type Error: file must have 'read' and 'readline' attributes

How can I send selected data frame To client from server. I have a data frame I select specific data frame from it . i got error on client side Error is (TypeError: file must have 'read' and 'readline' attributes) on line pickle.load(received)

Server Side

    import socket
import pandas as pd
import pickle
df = pd.read_csv(r"C:\Users\DELL\OneDrive\Desktop\mythesisdataset.csv" ,engine='python',
                 names=[ 'SBP', 'DBP', 'HEARTRATE', "Temperature" ])
normal_df = (df [ (df.SBP > 120) & (df.DBP > 90) & (df.HEARTRATE < 100) & (df [ 'Temperature' ] < 100) ])
print(normal_df)
normal_df_bytes = pickle.dumps(df)

s = socket.socket()
host = socket.gethostname()
port = 12345

s.bind((host, port))

print("host name:", host, " socket name:", socket)

print("Waiting for Fog-node to connect...")
s.listen()
while True:
    c, addr = s.accept()
    print('Got connection from', addr, '...')
    bytes = c.send(normal_df_bytes)
    c.close()  # Close the connection

Client side

import socket
import sys

HOST, PORT = "123.123.123.123", 12345
print(sys.argv[0:]);
data = " ".join(sys.argv[1:])

 Create a socket 
(SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # Connect to server and send data
    sock.connect((socket.gethostname(), 12345))
    sock.sendall(bytes(data + "\n", "utf-8"))

    # Receive data from the server and shut down
    received = str(sock.recv(1024), "utf-8")
        pickle.load(received)
finally:
    sock.close()

print("Sent:     {}".format(data))
print("Received: {}".format(received))


Solution 1:[1]

pickle.load(received) expects a file. Use pickle.loads(received), which excpects bytes

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Itay Raveh