首页
学习
活动
专区
圈层
工具
发布

Python网络编程中的套接字名和DNS解析

第2个参数就是套接字类型,然后我们解释一下套接字类型,尽管TCP和UDP是AFINET协议族特有的,但是套接字接口的设计者决定基于数据报的套接字这一宏观的概念创建一些更通用的名字,这就是SOCKDGRAM...这两个符号就可以覆盖不同地址族的很多协议了。 socket()调用的第3个参数是协议,但是一旦确定了协议族和套接字类型,可能使用的协议范围就被缩到了一个主要的选项。如果设置成0。...而下面要说getaddrinfo()这个工具,这个工具除了一些特定的工作,否则这个函数将是我们用来将用户指定的主机名和端口号转换为可供套接字方法使用的地址时所需的唯一方法。...这个工具还可以用来为服务器绑定端口,然后连接服务或者是请求规范主机名。当然这是3个最重要getaddrinfo()的标记操作。至于其他的标记,不同的操作系统上可用标记有所不同,但是也有一些是跨平台的。...如果用户正好输入了一个主机名,而系统认为该主机AppleTalk连接的。 2、getaddrinfo()调用失败会引起一个特定的名称服务错误。

4.4K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    socket:Python网络通信套接字

    套接字有2个主要属性用于控制如何发送数据:地址簇(address family)控制所用的OSI网络层协议;套接字类型(socket type)控制传输层协议。...套接字类型 套接字类型有两种: SOCK_DGRAM:面向消息的数据报传输,数据报套接字通常与UDP关联,即用户数据报协议。这些套接字能提供不可靠的消息传送。...SOCK_STREAM:面向流的传输,与TCP相关,即传输控制协议。它们可以在客户和服务器之间提供字节流,通过超时管理,重传和其他特性确保提供消息传送或失败通知。...) print("ip地址与端口号:", sockaddr) 运行之后,效果如下: 这里如果只用socket.getaddrinfo(‘www.csdn.net’, ‘http’),表示不需要过滤任何连接信息...所以通过后面的参数,可以筛选自己需要的链接信息。 其中,最后一个参数socket.AI_CANONNAME表示如果主机有别名,那么结果中会包含服务器的标准名。所有没有这个标志,标准名为空。

    66050

    Linux网络编程API(一)

    同时也可以传入上述服务类型与下面两个标志的相与的值: SOCK_NONBLOCK和SOCK_CLOEXEC。分别表示非阻塞,fork调用创建子进程后在子进程关闭该socket。...#include #include //成功返回0,失败返回-1并设置errno //errno的类型: EACCES,表示被绑定地址是受保护的...对于面向连接的TCP协议他必须设置为NULL。...//服务对应的端口号 char* s_proto; //服务的类型,通常是tcp或者udp } 参数: name: 目标服务的名字 proto: 指定服务类型,如传递”tcp“表示获取流服务,...传递“udp”表示获取数据报服务,传递NULL表示获取所有类型的服务 port: 目标服务对应的端口号 getaddrinfo getaddrinfo函数能通过主机名获得IP地址(内部使用gethostbyname

    1.7K21

    socket网络编程【1】寻址

    今天先学习寻址、协议簇和套接字类型的相关知识。 什么是套接字呢? 套接字是程序在本地或者通过互联网来回传递数据时所用通信通道的一个端点。...寻址 AF_UNIX: 用于UNIX域套接字 套接字类型主要是以下两种: SOCK_DGRAM:对应UDP协议 SOCK_STREAM:对应TCP协议 UDP和TCP的区别: TCP:面向连接、传输可靠...在网络中查找主机 要查找当前主机的名字,可以使用gethostname() import socket socket.gethostname() 所返回的名字取决于当前系统的网络设置,在不同的网络返回的名字可能不一样...()获取分配给一个传输协议的端口号: socket.getprotobyname("imap") socket.getprotobyname("tcp") 查找服务器地址 使用getaddrinfo()...socket.getaddrinfo("www.baidu.com", "https")

    98820

    通过域名获取主机IP -- struct addrinfo

    addrinfo **restrict res); /* 获取信息结果 */ 参数释义: nodename: 主机名(“lion-wu.blog.csdn.net”)或者是数字化的地址字符串(IPv4...如果 ai_flags 中设置了AI_NUMERICHOST 标志,那么该参数只能是数字化的地址字符串,不能是域名,该标志的作用就是阻止进行域名解析。...如果此参数设置为NULL,那么返回的socket地址中的端口号不会被设置。...如果 ai_flags 设置了AI_NUMERICSERV 标志并且该参数未设置为NULL,那么该参数必须是一个指向10进制的端口号字符串,不能设定成服务名,该标志就是用来阻止服务名解析。...能猜到为啥第一次操作失败了吗? ---- 今天的技术介绍就到这里啦,我要介绍一位我的新朋友: 唔仄lo咚锵 我们学校软件工程系的大佬,Java、算法、redis领域博主,正在厚积薄发当中。

    6.4K30

    一次算法读图超时引起的urllib3源码分析

    HTTPResponse参数为对返回数据的Model封装以下是urllib3 主干类层次结构image2分析源码的方式有很多中,其中问题导向最可靠,以下我们从Timeout进行分析urllib3源码urllib3...sock.settimeout(5) sock.recv(1024) sock.close()由上urllib3主干类层次结构可知,请求的建立的源码封装在HTTPConnection中,所以,我们想查看的...in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname...returns an empty list")由上urllib3主干类层次结构可知,请求的读取的源码封装在HTTPConnectionPool中,所以,我们想查看的ReadTimeoutError源码也在该类中...urllib3.PoolManager()r = http.request('GET', 'http://httpbin.org/bytes/8')r.data# 输出b'S\x04e\to\x12NN'注:对于更大的响应

    1.3K20

    Linux网络编程基础API

    它指定通信对方的socket地址。对于面向连接的TCP协议,该成员没有意义,必须被设置为NULL,这是因为对数据流socket而言,对方的地址已经知道。...不同的选项具有不同类型的值,如表中“数据类型”一列所示。 值得指出的是,对服务器而言,有部分socket选项只能在调用listen系统调用前针对业听socket设置才有效。...getaddrinfo getaddrinfo函数既能通过主机名获得IP地址(内部使用的是gethostbyname函数),也能通过服务名获得端口号(内部使用的是getservbyname函数)。...同样,service 参数可以接收服务名,也可以接收字符串表示的十进制端口号。hints参数是应用程序给getaddrinfo的一个提示,以对getaddrinfo的输出进行更精确的控制。...addrinfo结构体中,ai_ protocol 成员是指具体的网络协议,其含义和socket系统调用的第三个参数相同,它通常被设置为0。ai_fags 成员可以取表中的标志的按位或。

    1.8K20

    网络编程之Socket

    在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部。...答案就是通过port,一个机器上可以有0-65535个端口,你的程序想从网络上收发数据,就必须绑定一个端口,这样,远程发到这个端口上的数据,就全会转给这个程序。...socket 建立连接的过程跟我们现实中打电话比较像,打电话必须是打电话方和接电话方共同完成的事情,我们分别看看他们是怎么建立起通话的。...2、服务端套接字函数 设s为socket实例化的一个对象 s.bind() 绑定(主机,端口号)到套接字。 s.listen() 开始TCP监听。...socket.getaddrinfo(host, port, family=0, type=0, proto=0, flags=0) 返回远程主机的地址信息,例如:socket.getaddrinfo(

    75010

    网络编程-SOCKET开发

    传输层(TCP/UDP协议、端口、四层路由器、四层交换机)               建立端口到端口的通信,有两种传输方式 TCP协议: TCP是全双工的通信方式,可靠传输,速度慢,对传递的数据的长短没有限制...SYN::同步标志(请求连接) ACK:确认标志 FIN:结束标志               UDP协议: UDP无需连接,不可靠,速度快,传输内容长度有限制。     ...网络层(IP协议、路由器、三层交换机)          IP协议 IP v4、IP v6 IP地址根据网络ID的不同分为五种类型,分别为A、B、C、D、E类地址 A类:1.0.0.0-126.0.0.0...() 连接到当前套接字的远端的地址 socket.setblocking(flag) #True or False,设置socket为非阻塞模式,以后讲io异步时会用 socket.getaddrinfo...(host, port, family=0, type=0, proto=0,flags=0)返回远程主机的地址信息 socket.getfqdn() 拿到本机的主机名 socket.gethostbyname

    58320

    IPv6 socket编程下--实现篇

    可用的IP stack类型分别是IPv4-only、IPv6-only、IPv4-IPv6 Dual stack。 我们先定义客户端可用的IP协议栈的意思是,获取客户端当前能使用的IP协议栈。...sockaddr_storage是能够保存所有sockaddr下属的类型,但是128字节的大小有时候有点不可接受,而且每次使用都需要做类型转换。...hints.ai_flags |= AI_ADDRCONFIG这个是一个很有用的特性,这个flags表示getaddrinfo会根据本地网络情况,去掉不支持的IP协议地址。...域名 对应着如下 IP 地址: 173.194.127.180 173.194.127.176 2404:6800:4005:802::1010 若本地主机仅配置了 IPV4 地址,则返回的查询结果中不包含...IPV6 地址,即此时只有: 173.194.127.180 173.194.127.176 同样若本地主机仅配置了 IPV6 地址,则返回的查询结果中仅包含IPV6地址. 2404:6800:4005

    9.6K61

    Python网络编程-一文厘清socket、TCP和UDP那点事

    IP地址与端口 IP(Internet Protocol)是计算机网络相互连接进行通信而设计的协议,位于TCP/IP协议簇体系网络层中。...、套接字类型和协议号创建一个新的socket。...、套接字类型和协议类型创业一个套接字对象socketpair()以给定的地址家族、套接字类型和协议类型创业一对套接字对象create_connection()接收一个地址,返回套接字对象fromfd()...print(socket.getaddrinfo('baidu.com',port=80)) print(socket.getaddrinfo('example.org',80,proto=socket.IPPROTO_TCP...首先通过端口机制进行复用和分解,每个UDP应用程序在发送数据报文之前,必须与操作系统协商获取相应的协议端口及端口号,然后根据目的端口号进行分解,接收端使用UDP的校验进行确认,查看UDP报文是否正确到达了目标主机的相应端口

    1.8K20

    一文带你了解Python Socket 编程

    前言 Socket又称为套接字,它是所有网络通信的基础。网络通信其实就是进程间的通信,Socket主要是使用IP地址,协议,端口号来标识一个进程。...端口号的范围为0~65535(用户端口号一般大于1024),协议有很多种,一般我们经常用到的就是TCP,IP,UDP。下面我们来详细了解下Socket吧。...#可靠的连续数据包服务 2.协议对应端口 应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL POP3 MONGO 端口...#返回套接字的5元组列表地址 ,支持IPV4/IPV6解析 socket.getaddrinfo(host='localhost',port=3453,family=socket.AF_INET,type...:Https,Http;第二个为传输协议:Tcp Udp #返回端口所对应的服务 socket.getservbyport(443,'tcp') #设置主机名(仅限于Unix) socket.sethostname

    66610

    【网络通信】socket编程——TCP套接字

    UDP协议 套接字的返回值:若成功则返回文件描述符,若失败则返回 -1 说明进行网络通信,流式套接,同时系统认为是TCP协议 创建err.hpp 用于存储错误信息的枚举 如果创建失败,则终止程序 2...bind返回值:若成功,则返回0,若失败,返回 -1 使用bind,是需要借助一个通用结构体来实现的 所以定义一个 网络通信类型的结构体 local 在上一篇博客中,详细讲述了 sockaddr_in...write将缓冲区的count大小的数据写入 fd中 将res中的数据 写入 sock文件描述符中 tcpserver.cc (主函数main实现) 想要只输入 ....TCP协议 若创建套接字失败,则终止程序 2.发起链接 输入 man accept 客户端 通过套接字sockfd,向特定的服务器发起链接请求 sockfd:套接字 addr:公共类型的结构体 内部包含...=func_(buffer); std::coutres<<std::endl; //将res中的数据写给sock中

    77340

    C++中的socket编程常用接口

    常见的值包括: AF_INET:IPv4协议 AF_INET6:IPv6协议 AF_UNIX(或 AF_LOCAL):本地通信(同一台机器上的进程间通信) type(套接字类型):指定套接字的类型。...对于服务器端套接字,这是必需的步骤,因为它指定了服务器将在其上监听连接请求的地址和端口。...初始化 sockaddr_in 结构,将地址族设置为 AF_INET,IP 地址设置为 INADDR_ANY(这意味着绑定到所有可用的接口),端口号设置为 8080(使用 htons() 函数将端口号从主机字节序转换为网络字节序...返回值 成功时返回接收到的字节数,失败时返回 -1 并设置 errno。...返回值:成功时返回 0,失败时返回 -1 并设置 errno。 常用选项 以下是一些常用的 setsockopt() 中optname选项: SO_REUSEADDR:允许重用本地地址和端口。

    67510

    Windows下网络编程(win32API+VS2022)

    网络编程内部涉及到数据的打包、组装、发送、接收、解析等一系列过程,以实现信息的正确传输。 在TCP/IP协议族中,TCP和UDP是位于IP协议之上的传输层协议。...(12)getaddrinfo:根据主机名和服务名获取地址信息。 (13)gethostbyname:根据主机名获取主机的IP地址。 (14)gethostname:获取本地主机名。..., struct addrinfo** res); nodename:目标主机名或IP地址。...IP地址转换为二进制网络字节序的IP地址,并存储在结构体中 service.sin_port = htons(12345); //将端口号从主机字节序转换为网络字节序,并存储在结构体中...IP地址转换为二进制网络字节序的IP地址,并存储在结构体中 service.sin_port = htons(12345); //将端口号从主机字节序转换为网络字节序,并存储在结构体中

    71100

    Python | 使用Python3 实现端口扫描

    秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽。...优点:实现简单,对操作者的权限没有严格要求(有些类型的端口扫描需要操作者具有root权限),系统中的任何用户都有权力使用这个调用,而且如果想要得到从目标端口返回banners信息,也只能采用这一方法。...; 3、NULL扫描 反向扫描—-原理是将一个没有设置任何标志位的数据包发送给TCP端口,在正常的通信中至少要设置一个标志位,根据FRC 793的要求,在端口关闭的情况下,若收到一个没有设置标志位的数据字段...正常情况下,三个标志位不能被同时设置,但在此种扫描中可以用来判断哪些端口关闭还是开放,与上面的反向扫描情况相同,依然不能判断windows平台上的端口。...else: print('Res:CLOSE') print("") sock.close() except socket.gaierror

    3.9K32
    领券