Мне нужно:
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>