Python套接字发送数据帧:类型错误:文件必须有“读取”和“阅读线”属性

发布于 2025-01-11 20:16:06 字数 1586 浏览 1 评论 0原文

如何从服务器将选定的数据帧发送到客户端。我有一个数据框,我从中选择特定的数据框。我在客户端遇到错误错误是(TypeError:文件必须具有“read”和“readline”属性)在线pickle.load(已接收)

服务器端

    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

客户端

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))

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))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

但可醉心 2025-01-18 20:16:06

pickle.load(received) 需要一个文件。使用pickle.loads(received),它需要字节

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文