Работа с TCP-сокетами в Python - PullRequest
0 голосов
/ 08 мая 2018

Мне нужно:

1) Создайте сокет для определенного IP-адреса и порта

2) Отправить строку данных через соединение

3) Дождаться ответа и проверить его действительность

Я видел много противоречивых советов на данный момент и поэтому решил задать новый вопрос, чтобы попытаться выяснить это.

Я пытаюсь использовать библиотеку socket в Python для достижения этой цели, однако сталкиваюсь с парой проблем. Я пробовал несколько разных методов, однако я столкнулся с проблемой отправки строки данных. Мои данные представлены в формате XML, поэтому мне сложно получить их в виде строки . Я попытался преобразовать его в двоичный файл, однако предпочел бы его в текстовом формате, просто чтобы он был в виде строки. Любые указатели на , будет ли код выполнять 3 шага, которые я хочу выполнить, были бы идеальными!

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('109.73.xxx.xxx', 29006))
s.sendall('*XML SHOULD GO HERE*')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

В данный момент я не получил ответ от сервера, так как подозреваю ошибочный формат строки отправленных данных. Это означает, что я не смог проверить, печатает ли код данные ответа с сервера.

Данные XML, которые мне нужно передать в виде строки , имеют следующий формат:

<Message xmlns:xsi="http://www.w3.org/CANNOTPROVIDETHISURL" xmlns:xsd="http://www.w3.org/CANNOTPROVIDETHISURL">
  <ClientHeader>
    <element1>RC1234</element1>
    <element2>1234</element2>
    <element3>12345678</element3>
    <element4>123456789</element4>
    <element5>-1</element5>
    <element6>-1</element6>
    <element7>A123</element7>
    <element8>TMS</element8>
  </ClientHeader>
  <MsgType>TYPE</MsgType>
  <MsgData></MsgData>
</Message>
...