我正在尝试点击IP地址的端口并打印status code
(即200 OK , 502 Bad Gateway
等)。假设,我们说port 80
在IP地址xx.xx.xx.xxx
处打开。因此,xx.xx.xx.xxx:80
应该给我们200 OK
。在我的代码中,我使用的是端口811450
,它肯定没有打开,也没有应用程序在那里运行。但它没有显示任何错误。
import httplib
import urllib
import socket
class mysocket:
def __init__(self, sock=None):
if sock is None:
self.sock = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
host = "xx.xx.xx.xxx"
port = "811450"
def connect(self, host, port):
self.sock.connect((host, port))
def mysend(self, msg):
totalsent = 0
while totalsent < MSGLEN:
sent = self.sock.send(msg[totalsent:])
if sent == 0:
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
def myreceive(self):
chunks = []
bytes_recd = 0
while bytes_recd < MSGLEN:
chunk = self.sock.recv(min(MSGLEN - bytes_recd, 2048))
if chunk == '':
raise RuntimeError("socket connection broken")
chunks.append(chunk)
bytes_recd = bytes_recd + len(chunk)
return ''.join(chunks)
实现它的推荐方法是什么。
答案 0 :(得分:0)
首先,811450不是有效端口。最大的有效TCP端口范围是65535。
其次,您正在混淆TCP协议和HTTP协议。如果需要来自套接字的HTTP响应,则需要发送有效的HTTP请求。您可以使用requests
包轻松完成此操作:
import requests
r = requests.get('http://xx.xx.xx.xxx:811450')
print(r.status_code)