socket网络程序设计实验一,通过域名查询IP/gethostbyname(基于python3.7、PyQt5)

Python爬虫 socket库应用详解 Python爬虫(七) 学习Python爬虫过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。 —— socket库应用详解 —— 文章目录Python爬虫(七)—— socket库应用详解 ——一.socket库的函数二.socket库的方法 一.socket库的函数 gethostname():返回主机名。 gethostbyname():将host主机名转... 阅读详情

socket网络程序设计实验一(基于python3.7、PyQt5)

设计一个简单的通过域名查询IP地址的程序,
先放个运行效果图:
空输入时查询本机主机名和IP:
运行效果1
查询百度的ip
运行效果2

一、实验目的

  • 掌握socket库的常用函数
  • 掌握socket网络编程的基本流程框架
  • 掌握PyQt5的基本用法

二、实验环境

  • Windows10_x64操作系统
  • python3.7.1
  • PyQt5(设计界面)
  • Py UIC(将PyQt的***.ui文件转化为***.py文件)
  • Pyinstaller(打包成.exe程序,可选)

三、实验内容

(1)设计界面

打开PyQt5,没有安装的百度安装一下,配置一下环境即可。
新建一个Dialog Without Button吧,就是一个小窗口,里面啥都没有,我们自己摆
拖动左边的部件到右边,改一下text属性和layout布局,自己觉得好看就行我的是这样摆的:
设计界面
设计完成后左上角文件,保存就OK了,你可以改名字,不改的话默认是untitled.ui,然后就可以关掉PyQt5.

(2)Py UIC

在Pycharm中找到我们刚才保存的untitled.ui文件,右击找到External tools -> Py UIC
我改了名queryHost
UIC
点一下,就会帮我们自动生成了一个同名的.py文件,然后我们打开它开始盘,哦不,开始写代码

(3)补充代码

光是Py UIC给我们自动生成的代码是运行不了的,生成的只是设置控件的布局属性等,我们需要在代码的最后加上这么一段:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = Ui_Dialog()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

还用到了一些库,我们也需要自己导入:

import sys
import socket
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication

然后可以试运行一下了

运行就是这样了:
运行1
但是现在这个程序是没有任何功能的,点什么都没反应,接下来我们补充代码,实现程序的功能
我们在生成的类内定义两个方法,作为两个查询按钮的响应事件如下:

    def click_ym(self):
        ym = self.lineEdit.text()       # 获取域名输入内容
        if len(ym)==0:      # 输入为空时返回本机信息
            ym2 = socket.gethostname()
        else:
            ym2 =ym
        try:
            # info = socket.getaddrinfo(ym2, None)     # 域名转IP地址
            # ip = info[0][4][0]
            ip = socket.gethostbyname(ym2)
        except Exception as e:
            print(e)
        else:
            self.lineEdit_2.setText(ip)     # 显示信息
            textView = '主机名:' + ym2 +'\nIP地址:' + ip + '\n作者:15计算机' \
                                                     '172班 03号 LiePy'
            self.textBrowser.setText(textView)      # 显示信息
            self.lineEdit.setText(ym2)      # 显示信息
    def click_ip(self):
        ip = self.lineEdit_2.text()     # 获取IP输入内容
        if len(ip)==0:      # 输入为空时返回本机信息
            ym = socket.gethostname()
            ip = socket.gethostbyname(ym)
        else:
            try:
                info = socket.gethostbyaddr(ip)
                ym = info[0]
            except Exception as e:
                print(e)
        self.lineEdit.setText(ym)       # 显示信息
        self.lineEdit_2.setText(ip)     # 显示信息
        textView = '主机名:' + ym +'\nIP地址:' + ip + '\n作者:15计算机' \
                                                 '172班 03号 LiePy'
        self.textBrowser.setText(textView)      # 显示信息

然后再在Py UIC给我们生成的代码中的retranslateUi方法最后添加上:

		self.pushButton.clicked.connect(self.click_ym)      # 设置按钮关联动作
        self.pushButton_2.clicked.connect(self.click_ip)     # 设置按钮关联动作

这样就完成了按钮相应事件的绑定

OK运行一下程序

输入为空时点查询:
运行1
localhost域名查询:
运行2
127.0.0.1IP查询:
运行3
www.google.com域名查询:
运行4
嗯,OK啦,但是最下面这两个按钮我没有赋予功能,只是个摆设,也可以在代码中删掉

我们在retranslateUi中找到这两个按钮的id:

id
这里看到是pushButton_3和pushButton_4
ctrl+f 查找所有的pushButton_3和pushButton_4删掉有关的代码就好了
如图:
运行6
下面有点空,我们可以重新在代码中调整窗口的尺寸,浏览一下代码,发现这行
在这里插入图片描述
这一定就是控制尺寸的了,359是宽,361是高,我们把高缩小一点,300吧,试一下效果:
运行7
阔以阔以。

(4)pyinstaller打包

打开pycharm的terminal终端,(没有的话pip install pyinstaller安装一下)输入pyinstaller -F -w ***.py(你的文件名),等待打包完成就可以了,最后的.exe程序在项目目录的dist文件夹里,一个沙雕的鸟的图标就是它!
运行9
打开也是可以的
运行8

那么这个有点ZZ的小程序就这样吧
pass~
代码已上传到我的github项目,链接:https://github.com/LiePy/socket_test.git

通过域名查询IP地址的.NET实现详解 最大的痛点来了:没有公开的超时参数!它完全依赖操作系统行为,在网络差的时候可能卡住十几秒,严重影响用户体验。解决方案:用Task.Run包装 +控制超时。try调用方式:try这才是生产环境该有的样子 ✅。回顾全文,我们要记住几个核心要点:✅永远使用,抛弃Resolve✅不要假设只有一个IP,学会筛选IPv4/IPv6✅必须设置超时机制,避免线程阻塞✅合理利用缓存减少重复查询✅。 阅读详情

相关推荐

Cadence Allegro 17.4学习记录开始01-原理图Capture CIS 17.4

Orcad的学习记录

qq_31444421的博客 1万+

域名查ip方法

很多人都知道每一个网站都会对应一个ip,那么你知道怎么样通过域名查ip吗,下面是通过域名查ip的方法介绍。

2万+

WPS文档编辑时空行问题解决方案

本文详细介绍了如何解决WPS文档编辑时空行的问题,从问题描述与分析、解决方案详解到操作示例与注意事项等多个方面进行了全面阐述。通过本文的介绍和指导,用户可以快速定位问题根源并采取有效措施进行解决,从而提升文档编辑效率和美观性。未来,随着WPS软件的不断升级和优化,相信会有更多便捷高效的功能被添加到软件中。同时,用户也需要不断学习和探索新的操作技巧和方法,以适应不断变化的办公需求。希望本文能够为广大WPS用户提供有益的参考和帮助,共同推动办公效率的提升和发展。

mmoo_python的博客 1244

Gethostbyname() --------用域名或者主机名获取IP地址

头文件: #include  #include      struct hostent *gethostbyname(const char *name);     这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。     struct hostent     {

wyq393562305的专栏 740

使用Kolla部署多节点Rocky版本OpenStack

openstack命令行客户端使用,post-deploy会在 /etc/kolla/目录下生成文件admin-openrc.sh。每次使用openstack命令时执行source /etc/kolla/admin-openrc.sh(manager节点执行)source /etc/kolla/admin-openrc.sh (将文件内容复制到/etc/profile中,即可一直生效)3.2.2 开始安装kolla-ansible,要带上--ignore-installed PyYAML,否则可能会报错。

gyc1206的博客 1926

精度0.01%决定续航多20km|新能源汽车研发测试:功率分析仪到底有多硬核?

新能源汽车测试、功率分析仪、电驱系统、效率MAP、谐波THD、GB/T18488、CLTC工况、三电测试、台架标定、能量流分析。中的核心作用,用公式、思维导图、实战金句与避坑指南,帮研发测试人员把准数据、提效率、降返工,看完就能落地用。点击关注,进公众号主页查看历史文章,**台架接线图、效率MAP模板、GB/T18488测试清单等。优化弱磁/调制策略,高效区占比提升5%,CLTC续航直接+8~20km。同样工况,两次数据差0.8%,报告根本没法交。结果:数据飘、定位慢、反复返工、认证不过。

优快云-新能源汽车研发测试专业博主 168

已知域名如何知道网站的ip

通过这些方法,你可以轻松获取域名的IP地址。

hunter206的博客 1万+

【AI智能体】飞书 AI 智能客服机器人搭建与使用实战操作详解

飞书 AI 智能客服机器人搭建与使用实战操作详解

congge 6047

python网络编程之socket的使用

python网络编程之socket的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:p..

fengzhilaoling的博客 2065

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2242

解决Windows 11文件右键菜单卡死问题的方法

当你右键点击一个文件或者文件夹时,系统会加载与该文件类型相关的上下文菜单项,如果其中某个菜单项的代码执行时间过长或者出现错误,就会导致整个右键菜单卡死。综上所述,当你在Windows 11中遇到右键菜单卡死的问题时,你可以尝试禁用上下文菜单项、重置文件关联、排除第三方软件干扰、修复系统文件以及优化代码等方法来解决问题。如果你是一个开发者,并且你自己编写了一个上下文菜单项,那么问题可能出在你的代码中。例如,如果你遇到了图片文件的右键菜单卡死问题,你可以找到".jpg"或".png"等相关的子项。

HnrzLinux的博客 7536

域名反查IP多种方式_域名查ip

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。在这些工具的页面中,找到IP地址查询选项,输入要查询的域名,即可获取对应的IP地址。Dig是一个功能更强大的DNS查询工具,可以查询域名的各种详细信息,包括IP地址。

heike_Ch的博客 2万+

肺癌术后随访离散选择实验(DCE)设计与SAS实现

随着肺癌早期诊断和治疗技术的进步,肺癌患者的生存率显著提高,术后随访管理成为提升患者生活质量的关键环节。然而,如何在有限的医疗资源下设计出既符合患者需求又具有成本效益的随访方案,是临床决策面临的重要挑战。 离散选择实验(Discrete Choice Experiment, DCE)是一种定量研究方法,通过模拟真实世界的选择情境,测量患者对不同随访方案属性的偏好程度。本研究旨在通过DCE方法,系统评估肺癌术后患者对随访服务的偏好,为制定以患者为中心的随访策略提供循证依据。

huanghm88的专栏 96

Python3 --- Socket

一、Socket简介        Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规...

__静禅__ 2708

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

域名反查IP多种方式

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。红色部分代表参数值,appid默认为1,请修改为自己的appid值,去我的应用查看以及密钥。在这些工具的页面中,找到IP地址查询选项,输入要查询的域名,即可获取对应的IP地址。

后台模板 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python获取本机IP地址的几种方式

轻松获取本机IP的三种方式

xfxuezhang.cn 4万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

如何根据域名获取对应网络IP(真实ip地址)

如何根据域名获取对应网络IP(真实ip地址)

刘同学的博客 2371

Python3网络编程之socket模块其它方法学习

目录获取本机的主机名获取指定主机的IP获取指定主机的地址信息获取服务使用的端口获取端口对应的服务名字符IP转换成字节IP字节转换成字符IPgetsockname与getpeername整体代码 获取本机的主机名 socket.gethostname() hostname = socket.gethostname() print('hostname:', hostname, 'type:', hos...

爱喝水的qdy的博客 485

Python:通过socket.gethostbyname/socket.getaddrinfo获取域名的ip地址

【代码】Python:通过socket.gethostbyname获取域名的ip地址。

彭世瑜的博客 1697

根据域名快速查询IP

直接简单粗暴,上料~ 根据域名查询的方法共有2以下两种: 1、通过ping该域名实现 可知域名IP 为:14.215.177.38,14.215.177.39,可得知进行了网络负载均衡。不过肯定是外网IP,因为不会有企业会暴露自己的内网IP 2、通过nslookup获取IP 直接可查询出Addresses,IP地址 3、通过本机局域网IP方法,输入ipconfig,查询本机IP 如果是要查询本机IP的话,直接可ipconfig ...

小橙子的笔记屋 2万+

socket之gethostbyname

#include //printf #include //strcpy #include #include //hostent #include int main(int argc , char *argv[]) { // char *hostname = "www.163.com"; char *hostname = "www.njit.edu.cn"; char i

xxaichishizi的博客 1604

通过域名查找IP地址的几种常见方法

通过查看这些信息,用户可以找到与目标域名相关的请求,并查看其对应的IP地址。打开命令提示符(可以通过在开始菜单中搜索“cmd”或“命令提示符”来找到),输入“nslookup[域名]”,例如“nslookup www.example.com”,然后按下回车键。除了使用命令行工具外,还可以通过一些在线工具来查找域名对应的IP地址,如whatismyip、MXToolBox,这些在线工具通常提供了一个简单的界面,用户只需要输入域名,然后点击“查询”按钮,就可以快速获取该域名的IP地址及相关信息。

weixin_53018687的博客 6133

通过域名查询IP的4种方法

1、dig +short blog.csdn.net 2、host blog.csdn.net 3、nslookup blog.csdn.net

Just Do IT 1万+

socket编程二十四:gethostbyname()函数:通过域名获取IP地址

客户端中直接使用 IP 地址会有很大的弊端,一旦 IP 地址变化(IP 地址会经常变动),客户端软件就会出现错误。 而使用域名会方便很多,注册后的域名只要每年续费就永远属于自己的,更换 IP 地址时修改域名解析即可,不会影响软件的正常使用。 关于域名注册、域名解析、host 文件、DNS 服务器等本节并未详细讲解,请读者自行脑补。本节重点讲解如何使用域名。 通过域名获取IP地址 域名仅仅是 I...

baidu_15547923的博客 4181

在 python 使用socket 获取 IP

使用socket获取更多的信息 getsocketname:获得本机的信息(IP和port) getpeername:获得远程机器的信息(IP和port) fileno:每一个socket对应一个fd,使用此方法可以获得fd,为一个整数 import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) port = s

permike的专栏 9898
上一篇: python实现类似Siri的AI语音聊天机器人(需要图灵机器人和百度语音合成的API)
下一篇: socket网络程序设计实验二,客户端向服务器端发送并接收反馈消息(基于python3.7、PyQt5)
LiePy
博客等级 码龄7年 1927粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值