2015-07-02 2 views
0

Я начинаю работать в сети. У нас есть приложение отправителя и получателя. Я захватил пакеты, отправленные отправителем получателю, используя WinDump.Можем ли мы передать захваченные пакеты в качестве аргумента функции Socket send()

Я пишу приложение-отправитель python, которое будет путать пакеты, отправленные отправителем получателю.

Я просто хочу подтвердить, могу ли я напрямую передать пакетные данные, полученные с помощью метода WinDump, в метод send send().

Скажем, «агр кто-имеет 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

Вы можете отправить все, что угодно. Будет ли TCP-узел интерпретировать пакет как то, что он изначально был, это другой вопрос. Отправка того, что кажется ARP-пакетами по TCP-соединению, не имеет для меня никакого смысла, но это ваше приложение, только вы знаете, что он может сделать. – EJP

ответ

-1

В общем программировании pyhton сети вы не можете передать в качестве аргументов с помощью отправки метод. Вы просто передаете только строку как аргументы переменной.

В основном мы используем метод send() и sendall() для передачи TCP-сообщений.

Я упомянул нижеприведенное описание для обоих методов. Метод

гнездо посыла():

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() 

Я надеюсь, что это должно полезно для вас :)

+0

Возможно, это то, что написано в документации Python, хотя, как вы уже не указали, нельзя быть уверенным, но не так, как работает основная функция 'send()': поэтому не может быть так, как ведет себя Python или. В режиме блокировки он блокируется до тех пор, пока все, что вы предоставили, не будет перенесено в ядро. – EJP

+0

@EJP Я просто упомянул, что как передать сообщение в метод send() и не может передать несколько аргументов в методе send(), я не понимаю, почему сделать мой ответ пустым. Если я пойду не так, просто спроси кое-что для меня. –

Смежные вопросы