如何使用套接字发送请求并检查状态码?

时间:2018-09-21 15:20:46

标签: python sockets

因此,我对Python还是很陌生,现在正尝试了解如何在Python中使用TCP发送请求。示例代码和文档不是很有帮助(对我来说,因为我不懂Java)。

文档:

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

到目前为止,我有以下内容

set -s nullglob

如果我使用此程序,程序将显示我已连接并且set -elibrary(dplyr) library(janitor) dataset <- data.frame(ola = sample(c("a", "b", "c", 150, replace = TRUE)), s_18 = sample(1:5, 150, replace = TRUE)) dataset <- dataset %>% mutate(v18 = case_when( s_18 == 1 ~ "Agree", s_18 == 2 ~ "Partly Agree", s_18 == 3 ~ "Neutral", s_18 == 4 ~ "Partly Disagree", s_18 == 5 ~ "Disagree" )) sv18x <- dataset %>% count(v18) %>% janitor::adorn_percentages("col") %>% janitor::adorn_pct_formatting()

我也尝试过

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)

resultb''

如何使用文档中的命令获取数据?

1 个答案:

答案 0 :(得分:1)

根据this,您可以发送如下所示的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()

请注意,我没有在此处添加您的消息,也没有对您的数据进行编码。但是,正如评论中指出的那样,根据IANA,您的IP地址被错误地写入并指向私有IP地址,因此,如果您尝试通过公共网络发送出去,则不会工作。此外,我注意到您的代码还有其他一些问题:

  1. 您的消息看起来像您已经手动包含了TCP标头信息。请注意,通过使用socket库和您建议的方式一样,您正在发出TCP请求。因此,标头信息将包含在您的请求中,因此您无需自己包含它。
  2. 这里提供的是客户端代码,而您没有包含任何服务器代码。您是否为服务器编写了代码?如果没有,则需要一些。

否则,我看不到您的代码有任何问题。