Как отправить запрос через сокет и проверить код статуса? - PullRequest
0 голосов
/ 21 сентября 2018

Итак, я новичок в Python и сейчас пытаюсь понять, как отправить запрос с использованием TCP в Python.Пример кода и документа не очень полезен (для меня, поскольку я не понимаю Java).

Документ:

https://www.sharekhan.com/Upload/General/TradeTigerAPIForClient.pdf

У меня есть следующеедо сих пор

import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server = '192.168.43.211'
port = 800

request = "DataLength = 196|Transcode = 1|LoginId = ***|MemberPassword = sh*|TradingPassword = S77*| IP = 192.618.31.211|Reserved = |"

s.connect((server,port))
s.send(request.encode())
result = s.recv(4096)

Если я использую это, программа показывает, что я подключен, и result является b''

Я также пытался

request = "|DataLength =108|Transcode = 21|Exchange Code=NC|Reserved=|"

result - это b'Hurray you are connected'

Как использовать команды из документа для получения данных?

1 Ответ

0 голосов
/ 21 сентября 2018

Согласно этому , вы можете отправить TCP-пакет следующим образом:

import socket

server = '192.168.31.211'
port = 80
buffer_size = 4096

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((server, port))
sock.send(message)
data = sock.recv(buffer_size)
sock.close()

Примечание. Я не включил ваше сообщение здесь и не зашифровал ваши данные.Однако, как было указано в комментариях, ваш IP-адрес написан неправильно и относится к частному IP-адресу, в соответствии с IANA , поэтому, если вы пытаетесь отправить через общедоступную сеть, это выиграетне работаетКроме того, я заметил несколько других проблем с вашим кодом:

  1. Ваше сообщение выглядит так, как будто вы вручную включили информацию заголовка TCP.Имейте в виду, что, используя библиотеку socket в том виде, в каком вы есть и как я предлагал, вы делаете запрос TCP.Поэтому информация заголовка будет включена в ваш запрос, поэтому вам не нужно включать ее самостоятельно.
  2. Здесь у вас есть код клиента, и вы не указали код сервера.Вы написали код для своего сервера?Если нет, вам понадобятся некоторые.

В противном случае я не вижу никаких проблем с вашим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...