我是网络初学者。我们有发送者和接收者申请。我已经使用WinDump捕获了发送方发送给接收方的数据包。
我正在编写一个python发送者应用程序,它将发送者发送给接收者的数据包模糊。
我只想确认一下,我可以直接把使用WinDump获得的数据包放到socket send()方法中。
说,“arp who-has host1告诉host2”是WinDump获得的数据包
我可以写,
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(arp who-has host1 tell host2)
答案 0 :(得分:-1)
在一般的pyhton网络编程中,你不能使用send方法作为参数传递。你只是将字符串作为参数传递给变量。
基本上我们使用send()和sendall()方法来传输TCP消息。
我已经为这两种方法提到了以下解释。
socket send()方法:
套接字的send()
方法无法保证发送您传递的所有数据。相反,它返回实际发送的字节数,并期望您的应用程序处理未发送部分的重传
from socket import socket
sock = socket()
sock.connect(('1.2.3.4', 1234))
sock.send('My Name is Dasadiya Chaitanya !!!\n'')
sock.close()
套接字sendall()方法:
与send()
方法的工作方式相同,但python提供了一种名为sendall()
的便捷方法,可以确保在返回之前发送所有数据,并提供保证将所有数据发送到接收机。
from socket import socket
sock = socket()
sock.connect(('1.2.3.4', 1234))
sock.sendall('My Name is Dasadiya Chaitanya !!!\n')
sock.close()
我希望这对你有用:)