Python利用tkinter和socket实现端口扫描

 更新时间:2022年12月04日 09:22:00   作者:所谓独醉  
这篇文章主要为大家详细介绍了Python如何利用tkinter和socket实现端口扫描功能,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下

题目

请设计并实现一款主机端口扫描程序。程序根据用户输入的域名或IP地址,可以查询该主机的开放的端口号。 例如:

并有一定的异常处理

参考code

import tkinter
from tkinter import *
import socket
import tkinter.messagebox


class CheckPort:
    def __init__(self):
        window = Tk()
        window.title("端口扫描")
        window.geometry("600x500")
        frame1 = Frame(window)
        frame1.pack()
        Label(frame1, text="IP地址、域名:", bg="#f0f0f0").grid(row=0, column=1, pady=3)
        Label(frame1, text="起始端口(最小为1):", bg="#f0f0f0").grid(row=1, column=1, pady=3)
        Label(frame1, text="结束端口(最大为65535):", bg="#f0f0f0").grid(row=2, column=1, pady=3)
        self.searchText = StringVar()
        Entry(frame1, textvariable=self.searchText, justify=LEFT).grid(row=0, column=2)
        self.originPort = IntVar()
        Entry(frame1, textvariable=self.originPort, justify=LEFT).grid(row=1, column=2)
        self.endPort = IntVar()
        Entry(frame1, textvariable=self.endPort, justify=LEFT).grid(row=2, column=2)
        Button(frame1, text="扫描", command=self.getRes).grid(row=3, column=1, columnspan=2, pady=3)
        frame2 = Frame(window).pack()
        self.resText = Text(frame2, height=50, width=500, wrap=WORD)
        self.resText.pack()

        window.mainloop()

    def getRes(self):
        try:
            ip = socket.gethostbyname(self.searchText.get())
            str1 = ""
            if 1 <= self.originPort.get() <= self.endPort.get() <= 65535:
                for port in range(self.originPort.get(), self.endPort.get() + 1):
                    try:
                        socket.setdefaulttimeout(1)
                        client = socket.socket()
                        client.connect((ip, port))
                        client.shutdown(1)
                        str1 += f"{ip}:{port}已开放\n"
                    except Exception as e:
                        str1 += f"{ip}:{port}未开放\n"
                        pass
                str1 += f"扫描完成\n"
                self.resText.insert(END, str1)
            else:
                self.errorHandle("请输入正确的端口号!")

        except:
            self.errorHandle("请输入正确的域名或者ip地址!")

    def errorHandle(self, message):
        tkinter.messagebox.showerror(title="error", message=message)


CheckPort()

到此这篇关于Python利用tkinter和socket实现端口扫描的文章就介绍到这了,更多相关Python端口扫描内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解python里使用正则表达式的全匹配功能

    详解python里使用正则表达式的全匹配功能

    这篇文章主要介绍了详解python里使用正则表达式的全匹配功能的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • PyQt5实现下载进度条效果

    PyQt5实现下载进度条效果

    这篇文章主要为大家详细介绍了PyQt5实现下载进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python的即时标记项目练习笔记

    python的即时标记项目练习笔记

    这篇文章主要介绍了python的即时标记项目练习笔记,本文是阅读《python基础教程》一书的动手实践项目,需要的朋友可以参考下
    2014-09-09
  • Python中None的实现方法详解

    Python中None的实现方法详解

    在 Python 中,None 是一个常见且重要的对象,它通常用于表示“没有值”或“空值”,尽管经常使用 None,但很多人并不清楚 None 的底层实现原理,本文将深入探讨 Python 中的 None,包括其定义、实现细节、使用场景及其在 Python 内部的工作机制,需要的朋友可以参考下
    2025-03-03
  • Python脚本实现监听服务器的思路代码详解

    Python脚本实现监听服务器的思路代码详解

    这篇文章主要介绍了Python脚本实现监听服务器的思路,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 手把手教你在Pycharm中新建虚拟环境并使用(超详细!)

    手把手教你在Pycharm中新建虚拟环境并使用(超详细!)

    使用python开发项目通常都会创建一个虚拟环境,将项目依赖包安装到虚拟环境中,避免一台电脑上开发多个项目时依赖包版本号不兼容造成冲突,下面这篇文章主要给大家介绍了关于如何在Pycharm中新建虚拟环境并使用的相关资料,需要的朋友可以参考下
    2022-06-06
  • python编写脚本之pyautogui的安装和使用教程

    python编写脚本之pyautogui的安装和使用教程

    pyautogui一个神奇的图像自动化库,学会之后无所不能,下面这篇文章主要给大家介绍了关于python编写脚本之pyautogui的安装和使用的相关资料,需要的朋友可以参考下
    2021-12-12
  • Python中的json对象与string相互转换教程

    Python中的json对象与string相互转换教程

    python里有json这个库,但并没有json这个类,所以所谓的json对象本质上就是一个dict;而json这个库,用于实现dict到string、string到dict的互转,这篇文章主要介绍了Python中的json对象与string相互转换教程,需要的朋友可以参考下
    2022-11-11
  • 一文掌握python中的__init__的意思及使用场景分析

    一文掌握python中的__init__的意思及使用场景分析

    __init__是构造方法,谁调用,表示谁(更直观的理解就是类的方法中,谁调用,表示谁,见下面第一个代码)!!并不是必选项,也就是说在类中,这个不是必须用的,那什么场景需要用到,什么场景不需要用到呢,感兴趣的朋友跟随小编一起看看吧
    2023-02-02
  • PyTorch基础之torch.nn.CrossEntropyLoss交叉熵损失

    PyTorch基础之torch.nn.CrossEntropyLoss交叉熵损失

    这篇文章主要介绍了PyTorch基础之torch.nn.CrossEntropyLoss交叉熵损失讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论