这是一个关于PYTHON的socket问题

import  time
import  array
def jiaoyan(pack):
    if len(pack)%2==1:
        pack+=b'\0'
    words=array.array('h',pack)
    sum=0
    for word in words:
        sum += word
        sum = (sum >> 16) + (sum & 0xffff)
        sum = (sum >> 16) + (sum & 0xffff)
    return (~sum) & 0xffff


icmp=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_ICMP)
icmp.settimeout(3)


header = struct.pack('bbHHh', 8,0,0,1234, 1)
data=struct.pack('5s',b'haasd')


print(jiaoyan(header+data))

icmp.sendto(jiaoyan(header+data), ('127.0.0.1', 1))

这是我写的一个python程序,我想完成icmp的封装,发出去,接回来,但是我写的代码最后一行出了错。我不清楚错在哪里。。
看下面的就行 ,下面的是我新更新的!
图片说明
按理说 不应该出现问题的,校验的返回类型应该是二进制的,最后一条代码应该没问题

报了什么错,贴出来看下,是运行错误还是语法错误