首先我们来实现一个DNS查询功能,该功能的目的是传入一个网站域名自动将该域名解析为对应的IP地址,该功能的实现依赖于gethostbyname函数,该函数将主机名作为参数,并返回一个指向hostent类型结构的指针...结构包含许多字段,其中最重要的是h_name和h_addr_list。h_name是主机名,h_addr_list是一个指向具有主机IP地址的地址列表的指针。...hostent 是一个结构体,用于存储主机的基本信息,包括主机名、主机别名、IP 地址类型和地址列表等。...**h_addr_list; /* IP地址列表 */};其中,h_name字段是主机的官方名称,h_aliases字段是一个指向主机别名列表的指针,h_addrtype 字段指示地址类型...(通常是 AF_INET 或 AF_INET6),h_length 字段是地址长度(通常为 4 或 16 字节),h_addr_list 字段是一个指向 IP 地址列表的指针。
Python 获取本机局域网 IP 通过创建一个 UDP 套接字,并连接到公共的 DNS 服务器(此处是 Google 的 8.8.8.8 ),然后通过套接字的 getsockname ()方法获取本地...最后关闭套接字连接并返回本地 IP 地址。最终输出将打印本机的 IP 地址。...获取本地IP地址 local_ip = sock.getsockname()[0] return local_ip finally: # 关闭套接字连接...- 公共互联网采用分布式结构,由许多相互连接的网络设备组成,通过大量的路由器、交换机和服务器实现互联网通信。 3....IP 地址 - 局域网内的设备通常使用本地 IP 地址(如 192.168.x.x 或 10.x.x.x )来互相通信,通过网络地址转换( NAT )可以共享一个公共 IP 地址访问互联网。
MariaDB、HyperSQL、Snowflake、Cassandra、ClickHouse、Greenplum、Apache Hive、Vertica、MongoDB等数据库,满足了不用切换多种数据库工具的麻烦
---- 文章目录 打开一个网络接口:套接字 绑定IP与端口:bind 监听网络来信:监听套接字 接收网络来访者:允许连接 客户端方面:申请连接 关闭通信套接字:close() 公共用途的套接字函数...---- 打开一个网络接口:套接字 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。...---- 绑定IP与端口:bind bind() 用来关联 socket 到指定的网络接口(IP 地址)和端口号: bind(hostname,port) 参数释义: hostname:主机IP port...---- 公共用途的套接字函数 s.recv() # 接收 TCP 数据,数据以字符串形式返回,bufsize 指定要接收的最大数据量。flag 提供有关消息的其他信息,通常可以忽略。...其中 data 是包含接收数据的字符串,address 是发送数据的套接字地址。
,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP...s.accept() 接受TCP连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址。...公共socket函数 s.recv(bufsize[,flag]) 接受TCP套接字的数据。数据以字符串形式返回,bufsize指定要接收的最大数据量。...s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。...IP与端口 s.listen(1) #开始TCP监听 while 1: conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。...s.accept()接受TCP连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址。...公共socket函数s.recv(bufsize[,flag])接受TCP套接字的数据。数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。...将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。s.close()关闭套接字。s.getpeername()返回连接套接字的远程地址。...IP与端口 s.listen(1) #开始TCP监听 while 1: conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。...为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端接字提出连接请求 3.连接确认,建立连接 当服务器端套接字监听到或者说接收到客户端套接字的连接请求...对于python,开发者可以通过 import socket import sys 2.Python实现Socket通信 由于Python的Socket较容易理解,我们在这里使用Python入门Socket...s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。...同时,在服务端会有一下输出 连接地址: ('你的Ip地址', 客户端的端口)
在1台电脑上可以通过进程号 PID 来唯一标识一个进程,但是在网络中这是行不通的。...其实 TCP/IP 协议族已经帮我们解决了这个问题,网络层的 ip地址 可以唯一标识网络中的主机 而传输层的 协议+端口 可以唯一标识主机中的应用进程(进程)。...这样利用 ip地址,协议,端口 就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。 什么是Socket?...socket.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数 socket.recv() 接收TCP数据,数据以字符串形式返回,...socket.close() 关闭套接字 socket.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。
socket.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数 socket.recv() 接收TCP数据,数据以字符串形式返回,...其中data是包含接收数据的字符串,address是发送数据的套接字地址。...socket.close() 关闭套接字 socket.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。...socket.getsockname() 返回套接字自己的地址。...输入对方的ip地址 dest_ip = input("\n请输入对方的ip地址:") # 3.
其实 TCP/IP 协议族已经帮我们解决了这个问题,网络层的 ip地址 可以唯一标识网络中的主机 而传输层的 协议+端口 可以唯一标识主机中的应用进程(进程)。...socket.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数...其中data是包含接收数据的字符串,address是发送数据的套接字地址。...() 返回连接套接字的远程地址。...输入对方的ip地址 dest_ip = input("\n请输入对方的ip地址:") # 3.
等网络报文,而SOCK_RAW可以;SOCK_RAW也可以处理特殊的IPv4报文;利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。...connection是新的socket对象,服务器必须通过connection与客户通信; address是客户端的Internet地址。...socket.close():关闭套接字。 socket.getpeername():返回连接套接字的远程地址。返回值是元组(ipaddr,port)。...在Python中用TCP协议进行Socket编程十分简单,对于客户端,要主动连接服务器的IP和指定端口,对于服务器,要首先监听指定端口,然后,对每一个新的连接,创建一个线程或进程来处理。...服务端编程模型如下: 1、调用socket函数创建一个TCP套接字,返回套接字sock。 2、调用bind将sock绑定到已知地址,通常为ip和port。
address是连接客户端的地址 - 客户端Socket函数 s connect(address ) 连接到 address 处的套接字。...相同,但是成功返回0,失败返同ermno 的值 - 公共Socket函数 s.recv bufsize[,flag) 接受TCP 套接字的数据。...将数据发送到套接字,address 是形式为(ipaddr.port) 的元组,指定远程地址。...返回值是发送的字节数 s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。...返回值通常是元组(ipaddr.port) s.getsockname() 返回套接字自 己的地址。
套接字有两种,分别是基于文件型的和基于网络型的 Unix 套接字是第一个套接字家族,其“家族名”为AF_UNIX(在POSIX1.g标准中也叫AF_LOCAL),表示“地址家族:Unix”,包括python...Python 2.5 中加入了一种 Linux 套接字的支持:AF_NETLINK(无连接[见下])套接字家族让用户代码与内核代码之间的 IPC 可以使用标准 BSD 套接字接口。...家族 2 套接字地址:主机与端口 一个Internet 地址由网络通讯所必须的主机和端口组成,合法的端口号是0到65535,小于1024的端口号为系统保留端口 面向连接与无连接 面向连接:提供了顺序的...SOCK_STREAM这个名字,表达了它作为流套接字的特点,由于这些套接字使用Internet协议(IP)来查找网络中的主机,这样形成的整个系统,一般会由两个协议(TCP和IP)来提及,即TCP/IP...s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。
Socket 两个程序要网络通信,都需要使用 Socket 套接字(孔,插座的意思) 用于描述 IP 地址 和 端口 服务打开一个 Socket,并绑定到一个端口上,不同的端口对应不同的服务 python...https://www.runoob.com/python/python-socket.html 函数 描述 服务器端套接字 s.bind() 绑定地址(host,port)到套接字, 在 AF_INET...s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数 s.recv() 接收 TCP 数据,数据以字符串形式返回,bufsize 指定要接收的最大数据量...其中 data 是包含接收数据的字符串,address 是发送数据的套接字地址。...s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。
(TCP/IP)和(UDP/IP)来提及 16.3 Python中的网络编程 本节我们主要使用socket模块,模块中的socket()函数被用来创建套接字,其有自己的一套函数来提供基于套接字的网络传输...(socket.AF_INET, socket.SOCK_DGRAM) 使用from socket import * 将socket模块里的所有属性带到命名空间里 当我们创建了套接字对象后,所有的交互豆浆通过对该套接字对象的方法进行调用...s.connect()主动初始化TCP服务器连接 s.connect_ex()connect()函数的扩展版本,出错时返回出错码,而不是抛异常公共用途的套接字函数 s.recv()接收TCP数据 s.send...()创建一个与该套接字关联的文件 16.3.3 创建一个TCP服务器 ss.socket()#创建服务器套接字 ss.bind()#把地址绑定到套接字上 ss.listen()#监听连接 inf_loop...的标志变量 异常 error套接字相关错误 herror主机和地址相关的错误 gaierror地址相关错误 timeout超时 函数 socket()用指定的地址家族,套接字类型和协议类型(可选)创建一个套接字对象
访问您服务器的域名或IP地址,然后8080在浏览器中访问: http://server_domain_or_IP:8080 你应该看到一个如下所示的页面: /admin在浏览器的地址栏中添加到URL的末尾...python3-dev 现在开发文件可用,我们可以通过全局安装uWSGI pip。...server_name,以指向您的服务器的IP地址或域名。...在上面的示例中,导致套接字文件的每个目录都具有全局读取和执行权限(目录的权限列以r-x而不是---)。该www-data组拥有套接字本身的组所有权。...通过这些设置,Nginx进程应该能够成功访问套接字。 如果通向套接字的任何目录不属于该www-data组,或者没有全局读取和执行权限,则Nginx将无法访问该套接字。通常,这意味着配置文件有错误。
服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连接,(阻塞式)等待连接的到来 客户端套接字函数...s.connect() 主动初始化TCP服务器连接 s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数 s.recv()...s.sendall() 发送TCP数据 s.recvfrom() 接收UDP数据 s.sendto() 发送UDP数据 s.getpeername() 连接到当前套接字的远端的地址...s.getsockname() 当前套接字的地址 s.getsockopt() 返回指定套接字的参数 s.setsockopt() 设置指定套接字的参数 s.close()...() 得到阻塞套接字操作的超时时间 面向文件的套接字的函数 s.fileno() 套接字的文件描述符 s.makefile() 创建一个与该套接字相关的文件
,而SOCK_RAW可以;其次SOCK_RAW也可以处理特殊的IPV4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头 socket.SOCK_SEQPACKET 可靠的连续数据包服务...(ipaddr, port),指定远程地址发送,返回值是发送的字节数 s.close() 关闭套接字 s.getpeername() 返回套接字的远程地址,返回值通常是一个tuple(ipaddr, port...一般超时期应在刚创建套接字时设置,因为他们可能用于连接的操作,如s.connect() s.gettimeout() 返回当前超时值,单位是秒,如果没有设置超时则返回None s.fileno() 返回套接字的文件描述...s.makefile() 创建一个与该套接字相关的文件 Socket 编程思想 TCP 服务器 1、创建套接字,绑定套接字到本地IP与端口 s = socket.socket(socket.AF_INET...) #创建套接字 s.bind(ip_port)#绑定地址 s.listen(5)#监听链接 print('server listening...') while True: #无限等待连接 conn
如UDP协议、TCP协议 02:网络通信三要素(IP地址、端口号、传输协议 1)IP地址:表示网络上一台独立的主机 ; IP地址=网络地址+主机地址。...套接字B:“好的,我这边已准备就绪。” 套接字A:“谢谢你受理我的请求。” 2)三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。...socket通信流程.png 05:socket常用方法 1)概述:又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。...2)方法分类:服务端套接字、客户端套接字、公共用途套接字 ①服务端:bind、listen、accept ②客户端:connet等 ③公共端:recv、send、sendall、close等 3)注意事项...IP地址和端口号 sk.listen(5)#开始监听是否有请求:同时最多允许有5个连接 print('等待客户端的连接')#释放信号 coon,addr=sk.accept()#连接成功后会返回一个新的套接字和客户端地址
领取专属 10元无门槛券
手把手带您无忧上云