使用 Pickle 在 Python 中进行套接字编程

我是我

我在 python 中使用了 pickle 函数来解决套接字编程问题。但是我在服务器上收到的输出被打印为“< main .ProcessData instance at 0x7fbacba37f38>”而不是发送的内容。

服务端和客户端代码如下:

服务器

import socket, pickle

class ProcessData:
    print "Server is Listening....." 


print "Server is Listening....."
HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr

data = conn.recv(4096)
data_variable = pickle.loads(data)
conn.close()
print data_variable
print 'Data received from client'

客户

import socket, pickle

class ProcessData:
    print 'ABCDEFGHIJK'



HOST = 'localhost'
PORT = 50007
# Create a socket connection.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

# Create an instance of ProcessData() to send to server.
variable = ProcessData()
# Pickle the object and send it to the server
data_string = pickle.dumps(variable)
s.send(data_string)

s.close()
print 'Data Sent to Server'

我得到以下输出:

服务器正在侦听..... 服务器正在侦听..... 连接方式 ('127.0.0.1', 34726) < main .ProcessData instance at 0x7f8e2dfaaf80> 从客户端收到的数据

但我必须得到 ABCDEFGHIJ。我应该怎么办?

B. 莫里斯

不清楚为什么您的声明中有打印语句class,但是将数据放在打印语句中,类声明肯定不是您想要的。

您正在正确地酸洗、发送和接收一个对象,但您的对象没有做任何事情。

您大概想要的是一些具有您共享数据类型的模块,然后客户端和服务器可以与该类型进行通信。

我创建processdata.py了以下内容:

class ProcessData:
    def __init__(self, data= 'ABCDEFGHIJK'):
        self.data = data
    def __str__(self): return self.data

然后这样修改你的代码:

客户

import socket, pickle
from processdata import ProcessData

HOST = 'localhost'
PORT = 50007
# Create a socket connection.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

# Create an instance of ProcessData() to send to server.
variable = ProcessData()
# Pickle the object and send it to the server
data_string = pickle.dumps(variable)
s.send(data_string)

s.close()
print 'Data Sent to Server'

服务器

import socket, pickle

print "Server is Listening....."
HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr

data = conn.recv(4096)
data_variable = pickle.loads(data)
conn.close()
print data_variable
print 'Data received from client'

然后我得到

Server is Listening.....
Connected by ('127.0.0.1', 50941)
ABCDEFGHIJK
Data received from client

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

recv和recvfrom,使用python进行套接字编程

来自分类Dev

使用Python服务器和Android客户端进行套接字编程

来自分类Dev

使用Python进行套接字编程:获取服务器的端口

来自分类Dev

使用Python服务器和Android客户端进行套接字编程

来自分类Dev

使用Python进行套接字编程:获取服务器的端口

来自分类Dev

使用Scala阅读python pickle

来自分类Dev

用python进行套接字编程

来自分类Dev

通过套接字进行Python网络编程

来自分类Dev

使用 UDP 进行 Java 套接字编程

来自分类Dev

Python套接字编程:异常后为“地址已在使用中”

来自分类Dev

使用 Python 套接字编程不显示 HTML 页面

来自分类Dev

Python:使用SVM时出现Pickle错误

来自分类Dev

如何在Python套接字中进行发送和接收?

来自分类Dev

如何在Python套接字中进行发送和接收?

来自分类Dev

Python套接字编程

来自分类Dev

如何使用pickle进行序列化

来自分类Dev

Base64解码python帮助进行套接字编程

来自分类Dev

使用NSStream进行Objective-C套接字编程

来自分类Dev

使用选择模型与套接字进行python聊天

来自分类Dev

Python状态套接字编程

来自分类Dev

Python2:我应该使用Pickle还是cPickle?

来自分类Dev

在python中使用pickle时发生内存泄漏

来自分类Dev

我怎么知道python 3是否使用cPickle或Pickle?

来自分类Dev

使用pickle将字典保存在python中

来自分类Dev

如何保存字典Python编辑:可以使用pickle

来自分类Dev

mpi4py是否使用Python Pickle

来自分类Dev

Python:如何使用pickle来转储Queue对象?

来自分类Dev

如何使用 Python 删除存储在 Pickle 文件中的对象

来自分类Dev

为什么对python服务器使用struct而不是pickle

Related 相关文章

热门标签

归档