匿名用户
1级
2014-09-10 回答
如果是需要pack字符串后,再使用socket进行发送的话,这样应该就可以了
import struct
str1='3e210925041f000000a0010112008289125ba0000000'
sdata=struct.pack('%ds'%len(str1),str1)
...
s.send(sdata)
追问:
>>> type(sdata)
你的结果仍是str类型,不是bytes
追答:
你把socket接口发出来,我看看吧,被你搞晕了....
追问:
就是简单的UDP发送,我要模拟特定的数据结构,然后在wireshark上看,
d_ip='10.68.232.176'
d_port=2152
d_addr=(d_ip,d_port)
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto('需要的二进制序列',d_addr)
追答:
这样试试:
import struct
import socket
def SocketClient():
try:
#建立socket对象
s=socket(AF_INET,SOCK_STREAM,0)
Colon = ServerUrl.find(':')
IP = ServerUrl[0:Colon]
Port = ServerUrl[Colon+1:]
#建立连接
s.connect((IP,int(Port)))
str1='3e210925041f000000a0010112008289125ba0000000'
sdata=struct.pack('%ds'%len(str1),str1)
s.send(sdata)
sresult=s.recv(1024)
print "Response:\r\n%s\r\n" %sresult
#关闭Socket
s.close()
except Exception,ex:
print ex
ServerUrl = "10.68.232.176:2152"
SocketClient()
socket.send(string)
如果你需要send 十六进制,二进制数据什么的,使用进制转换后,再pack成string发送即可
追问:
看图吧,二进制和str的表现;我需要在16进制那一块显示;