python网络socket实现将客户端的一个结构:student,包括名称,年龄,照片三个字段,将这个结构发送到服务器,服务器接受到后打印出来
时间: 2023-11-20 16:06:23 浏览: 30
以下是一个简单的示例代码,实现了客户端将包含学生信息的结构体发送到服务器,并在服务器接收打印出来。
客户端代码:
```python
import socket
import pickle
# 定义学生信息结构体
class Student:
def __init__(self, name, age, photo):
self.name = name
self.age = age
self.photo = photo
# 创建学生信息对象
student = Student("Alice", 20, "photo.jpg")
# 将学生信息序列化为字节流
data = pickle.dumps(student)
# 创建socket连接
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8888)
client_socket.connect(server_address)
# 发送数据
client_socket.sendall(data)
# 关闭连接
client_socket.close()
```
服务器端代码:
```python
import socket
import pickle
# 定义学生信息结构体
class Student:
def __init__(self, name, age, photo):
self.name = name
self.age = age
self.photo = photo
# 创建socket连接
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8888)
server_socket.bind(server_address)
server_socket.listen(1)
# 等待客户端连接
print("Waiting for client connection...")
client_socket, client_address = server_socket.accept()
# 接收数据
data = client_socket.recv(1024)
# 将字节流反序列化为学生信息对象
student = pickle.loads(data)
# 打印学生信息
print("Student name:", student.name)
print("Student age:", student.age)
print("Student photo:", student.photo)
# 关闭连接
client_socket.close()
server_socket.close()
```
注意,这里使用了Python的pickle模块将学生信息对象序列化为字节流,以便在网络上传输。在实际应用中,需要注意数据的安全性和完整性。