检查服务是否可以访问并在Python中使用套接字模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查服务是否可以访问并在Python中使用套接字模块相关的知识,希望对你有一定的参考价值。

与我的问题相关的上下文是我在网络领域的一家公司工作。该公司在全国各地有几家商店,可以通过端口2781访问DVR,还有一个供人们访问安全摄像机的域,问题是,为了使这些人能够通过域和端口成功访问DVR,必须在其中配置DMZ商店的调制解调器。为了证实DMZ,我正在尝试将Python与sockets模块一起使用,但是我还不知道这样做的最佳方法。

import socket


s = socket.socket()
s.connect((domain, port))
s.close()

一旦建立适当的连接,这是检查是否存在通信的最佳方法?使用它来工作还是有例外,或者只使用socket.recv并检测它是否为空?

答案

为了使connect成功,已经必须进行某种连接。否则,TCP握手将失败。因此,第一步将是检查connect是否成功或引发异常。

仍然有可能存在一些深度数据包检查防火墙,该防火墙不会阻止初始连接,而只会阻止以后的数据交换。要确定是否是这种情况,必须进行实际的双向通信。但是这种通信的外观应取决于您所不知道的特定应用协议。仍然需要检查a)发送和接收的工作方式(捕获异常)和b)响应返回期望的数据。

以上是关于检查服务是否可以访问并在Python中使用套接字模块的主要内容,如果未能解决你的问题,请参考以下文章

是否有一个 TCP 套接字库/协议可以进行消息框架并在 JS 和 C# 中受支持?

如何从网络服务器检查套接字?

Python - 如何检查套接字是否仍然连接

如何在 VB.NET 中检查 TCP 服务器(套接字)与 TCP 客户端的连接状态

是否可以让 3 台服务器使用 Python 套接字在一个端口(比如端口 48000)上相互通信

检查Windows服务是否存在并在PowerShell中删除