没有合适的资源?快使用搜索试试~ 我知道了~
Python程序设计-3期(KC017) E82.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 92 浏览量
2022-07-13
12:33:13
上传
评论
收藏 11KB DOCX 举报
温馨提示
试读
3页
Python程序设计-3期(KC017) E82.docx 学习资料 复习资料 教学资源
资源推荐
资源详情
资源评论
8.2 整数网络传输
8.2.1 教学目标
网络上读写的数据本质上是连续的二进制数据流字节,要把整数进行网络传输,就必须
把整数转为二进制数据流写入网络,然后在网络的另外一端读取二进制数据把它反向变回整
数数据,教学目标就是要掌握整数的这种传输方法。
8.2.2 整数与二进制数据
在计算机中一个整数通常是 4 个或者 8 个字节的二进制数据,我们怎么样得到整数的二
进制数据呢?Python 中有一个 struct 模块,使用它的 pack 函数可以吧一个整数转为二进制
数据,使用它的 unpack 函数可以把二进制数据再次反向转化为整数。使用这两个函数要设
置整数的格式”@i”,其中”@”是格式引导符合,”i”代表整数。
例如:
n=100
data=struct.pack(“@i”,n)
m=struct.unpack(“@i”,data)[0]
那么 data 是 n=100 整数的二进制数据,而 struct.unpack(“@i”,data)把 data 二进制转为
整数,它返回一个元祖数据,第一个数据就是转换的整数。
一个整数到底是 4 个字节还是 8 个字节二进制数据是因系统而定的,例如在 32 位系统中
是 4 字节,64 位系统为 8 字节,具体是多少字节可以通过 struct.calcsize(“@i”)得到。
根据这个原理,编写出通过 socket 套接字在网络中写整数 n 的函数 writeInt:
def writeInt(socket,n):
data=struct.pack("@i",n)
socket.send(data)
同样编写一个从网络中读出一个整数的函数:
def readInt(socket):
size=struct.calcsize("@i")
data=socket.recv(size)
n=struct.unpack("@i",data)[0]
return n
函数先计算整数的字节数 size,然后从网络中读出 size 个字节,把它转为整数即可。
8.2.3【案例】整数网络传输
1、案例描述
客户端连接服务器后向服务器发送一个整数,服务器接收后返回这个整数给客户端。
2、案例分析
要发送整数就必须把这个整数转为二进制数据,转换的语句可以采用 struct.pack。要接
收整数就必须从二进制流中读出整数占的字节数,通过 struct.calcsize 计算得到,然后读出
这个字节数,通过 struct.unpack 把它转为整数。
3、案例代码
(1) 服务器程序
资源评论
努力搬砖的小王
- 粉丝: 17
- 资源: 7706
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功