首先我们来实现一个DNS查询功能,该功能的目的是传入一个网站域名自动将该域名解析为对应的IP地址,该功能的实现依赖于gethostbyname函数,该函数将主机名作为参数,并返回一个指向hostent类型结构的指针...h_name是主机名,h_addr_list是一个指向具有主机IP地址的地址列表的指针。hostent 是一个结构体,用于存储主机的基本信息,包括主机名、主机别名、IP 地址类型和地址列表等。...地址类型(IPv4或IPv6)*/ int h_length; /* IP地址长度 */ char **h_addr_list; /* IP地址列表 */};...(通常为 4 或 16 字节),h_addr_list 字段是一个指向 IP 地址列表的指针。...地址列表 for (int i = 0; ptr->h_addr_list[i]; i++) { printf("IP地址 [%d]: %s \n", i + 1, inet_ntoa(*(struct
在 TCP/IP 协议中,流套接字使用 TCP 协议进行数据传输。 数据报套接字 : 提供了一种无连接、不可靠的通信机制 , 数据 以独立的数据包形式传输。...在 TCP/IP 协议中,数据报套接字使用 UDP 协议进行数据传输。...3、Socket 套接字使用步骤 Socket 套接字使用步骤 : 创建套接字 : 使用 套接字 API 创建一个套接字对象 , 一般由 编程语言 官方提供 标准 API ; 绑定 IP 地址和端口号...创建 socket 实例对象 import time 绑定 IP 地址和端口号 : 将套接字与一个 IP 地址 和 端口号绑定 ; # 2....客户端连接服务器, IP 地址和端口号放在元组中 client_socket.connect(('127.0.0.1', 8090)) 发送和接收数据 : 使用 Socket 套接字 发送 或 接收 数据
二、IP地址和端口号 IP地址是在IP协议中, 用来标识网络中不同主机的地址; 对于IPv4来说, IP地址是一个4字节, 32位的整数; 我们通常也使用 "点分十进制" 的字符串表示IP...struct sockaddr *dest_addr, socklen_t *addrlen); 3.2.1、 socket socket()返回一个文件描述符,domain表示套接字的类型...,type表示套接字的服务类型,第三个参数填0,参数填好就能确定是udp套接字。...创建失败-1被返回,错误码被设置。socket就相当于在进程内部帮我们打开了一个文件。远端机器要想办法找到这个文件,所以就有了bind。...ip地址也要从主机序列转为网络序列,使用inet_addr函数可以一步到位将string类型的ip转化为4字节ip并转化为网络序列。
写入配置文件 CString IP, Port; UpdateData(TRUE); // 将应用程序控件上面的IP和端口 更新至对应的成员变量 IP = m_IpAddress.GetString...(); // 读取成员变量控件上面的IP地址将赋给strIP变量 Port.Format(L"%d", m_iPort); // 读取成员变量控件上面的端口将赋给m_iPort变量 WritePrivateProfileString...\\IPConfigurationFile.ini"); // 端口号你能够搞定,IP地址你也可以搞定 m_iPort = port; // 将读取到端口号赋给端口控件变量 char ip[...100]; //CString ipaddress; // ip地址变量 GetPrivateProfileString(L"ServerConfiguration", L"strIP", 0, (...\\IPConfigurationFile.ini"); //MessageBox((LPWSTR)ip); // 将读取到ip地址,端口号赋给端口控件变量 m_iPort = port;
功能描述: 获取自己计算机所在公网IP地址。 技术路线: 网络上有些网页,访问这些网页时会显示我们的公网IP地址。...利用爬虫技术,编写Python程序向这样的页面发出请求,在返回的响应中会包含我们的公网IP地址,然后再根据返回的信息格式解析出公网IP地址就可以了。...方法一: 通过网页http://ip.42.pl/raw,访问这个页面时,界面如下: ? 查看网页源代码会发现也只有一个IP地址,根据这个特点,编写代码如下,可以直接获取自己的公网IP地址。 ?
问题描述: 函数main()接收一个任意字符串s作为参数,要求使用正则表达式检查字符串s是否为有效的IPv4地址,也就是由3个圆点分隔的4组十进制数且每组十进制数都介于区间[0,255]。
Python 2.5 中加入了一种 Linux 套接字的支持:AF_NETLINK(无连接[见下])套接字家族让用户代码与内核代码之间的 IPC 可以使用标准 BSD 套接字接口。...SOCK_STREAM这个名字,表达了它作为流套接字的特点,由于这些套接字使用Internet协议(IP)来查找网络中的主机,这样形成的整个系统,一般会由两个协议(TCP和IP)来提及,即TCP/IP...由于这些套接字使用 Internet 协议来查找网络中的主机,这样形成的整个系统,一般会由这两个协议(UDP 和 IP)来提及,即 UDP/IP。...,一般格式为元祖(host,port)的格式,如果出错,返回socket.error错误 s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数...3使用sys 模块进行shell命令的使用 1 服务器端 ? 2 客户端: ? 3 测试 ? ? 4 如果参数错误,则返回错误的名称,而不会报错或者直接终止链接: 1 服务端配置 ?
其实 TCP/IP 协议族已经帮我们解决了这个问题,网络层的 ip地址 可以唯一标识网络中的主机 而传输层的 协议+端口 可以唯一标识主机中的应用进程(进程)。...这样利用 ip地址,协议,端口 就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。 什么是Socket?...(流式套接字,主要用于 TCP 协议) 或SOCK_DGRAM (数据报套接字,主要用于 UDP 协议) protocol: 一般不填默认为 0 创建 Socket(套接字) 套接字使用流程 与 文件的使用流程很类似...) # 套接字功能的使用 # 此处省略......将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。
套接字使用流程 与 文件的使用流程很类似 创建套接字 使用套接字收/发数据 关闭套接字 TCP Socket(TCP 套接字) import scoket # 创建TCP套接字 s = socket.socket...) # 套接字功能的使用 # 此处省略......s.close() Socket套接字对象方法 方法 描述 服务器端套接字 socket.bind() 绑定地址(host,port)到套接字, 在 AF_INET下,以元组(host,port)的形式表示地址...将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。...输入对方的ip地址 dest_ip = input("\n请输入对方的ip地址:") # 3.
(流式套接字,主要用于 TCP 协议) 或SOCK_DGRAM (数据报套接字,主要用于 UDP 协议) protocol: 一般不填默认为 0 创建 Socket(套接字) 套接字使用流程 与...文件的使用流程很类似 创建套接字 使用套接字收/发数据 关闭套接字 TCP Socket(TCP 套接字) import scoket # 创建TCP套接字 s = socket.socket(socket.AF_INET...) # 套接字功能的使用 # 此处省略......将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。...输入对方的ip地址 dest_ip = input("\n请输入对方的ip地址:") # 3.
在使用TCP/IP协议时需要进行复杂的设置,每个结点至少需要一个“IP地址”、一个“子网掩码”、一个“默认网关”、一个“主机名”。...对于python,开发者可以通过 import socket import sys 2.Python实现Socket通信 由于Python的Socket较容易理解,我们在这里使用Python入门Socket...函数 描述 服务器端套接字 s.bind() 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。...将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。...s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。
二、socket模块接口 1、socket类型 Python 中,用使用socket函数来创建套接字,语法格式如下: sock = socket.socket([family[, type]]) family...等网络报文,而SOCK_RAW可以;SOCK_RAW也可以处理特殊的IPv4报文;利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。...将buf中的数据发送到连接的套接字,但在返回前会尝试发送所有数据。成功返回None,失败则抛出异常。...服务端编程模型如下: 1、调用socket函数创建一个TCP套接字,返回套接字sock。 2、调用bind将sock绑定到已知地址,通常为ip和port。...使用UDP协议时,不需要建立连接,只需要知道对方的ip和port,就可以直接发数据包,但数据包能否到达是无法确定的。
1.4.无连接套接字 数据报格式套接字(Datagram Sockets)也叫“无连接的套接字”,在代码中使用 SOCK_DGRAM 表示。...数据报套接字也使用 IP 协议作路由,但是它不使用 TCP 协议,而是使用 UDP 协议(User Datagram Protocol,用户数据报协议)。...面向连接的套接字通信工作流程 (1)服务器先用socket函数来建立一个套接字,用这个套接字完成通信的监听 (2)用bind函数来绑定一个端口号和IP地址。...() connect()的扩展版本,此时会以错误码的形式返回问题,而不是抛出一个异常 普通的套接字方法 s.recv() 接收 TCP 消息 s.recv_into...异常 error 套接字相关错误 herror① 主机和地址相关错误 gaierror① 地址相关错误 timeout 超时时间
Socket 两个程序要网络通信,都需要使用 Socket 套接字(孔,插座的意思) 用于描述 IP 地址 和 端口 服务打开一个 Socket,并绑定到一个端口上,不同的端口对应不同的服务 python...https://www.runoob.com/python/python-socket.html 函数 描述 服务器端套接字 s.bind() 绑定地址(host,port)到套接字, 在 AF_INET...将 string 中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回 None,失败则抛出异常。...其中 data 是包含接收数据的字符串,address 是发送数据的套接字地址。...s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。
下面讲的是Socket模块功能 1、Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。...,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP...将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。...s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。...IP与端口 s.listen(1) #开始TCP监听 while 1: conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
它们可能会阻止你的应用程序访问所请求的套接字,从而导致错误消息的出现。3. 端口冲突如果另一个应用程序已经在使用所需的端口,你将无法绑定到它。...当遇到"10013: 尝试访问被其访问权限禁止的套接字时发生的错误"时,可以采取以下示例代码来解决问题。 示例代码是使用Python的socket模块来建立TCP服务器的一个简单例子。...以下是一些常见的套接字错误代码及其含义的介绍:11001: 主机未找到(WSAHOST_NOT_FOUND)当主机名无法解析为有效IP地址时抛出。可能是由于网络连接问题或域名解析错误导致的。...10048: 地址已在使用中(WSAEADDRINUSE)当尝试绑定到一个已被其他套接字占用的地址时抛出。可能是因为同一台主机上的另一个进程正在使用该地址或者是套接字对象没有正常关闭导致的。...10040: 消息过长(WSAEMSGSIZE)当发送的 UDP 数据报大小超过套接字的最大限制时抛出。在发送数据时,需要确保数据大小不超过套接字的限制。
下面讲的是Socket模块功能 1、Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。...,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP...客户端socket函数s.connect(address)连接到address处的套接字。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。...将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。s.recvfrom(bufsize[.flag]) 接受UDP套接字的数据。...IP与端口 s.listen(1) #开始TCP监听 while 1: conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
套接字格式为:socket(family,type[,protocal]),使用给定的地铁,套接字类型,协议编号(默认为0)来创建套接字。 Socket类型及说明。...将string 中的数据发送到连接的套接字,但在返同之前会尝试发送所有数据。成功返回None,失败则抛出异常 s.recvfrom(bufsize[.flag]) 接受UDP 套接字的数据。...将数据发送到套接字,address 是形式为(ipaddr.port) 的元组,指定远程地址。...返回值是发送的字节数 s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。...相对TCP,UDP则是面向无连接的协议,使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发送数据包,但是不关心是否能到达目的端,虽然使用UDP传输数据不可靠,但由于它没有建立连接的过程
Control Protocol)(TCP) 为了创建TCP套接字,必须使用SOCK_STREAM作为套接字类型 无连接的套接字:在通信开始前不需要建立连接(无法保证顺序性、可靠性或重复性) 实现这种连接类型的主要协议是用户数据报协议...(User Datagram Protocol)(UDP) 为了创建UDP套接字,必须哈斯用SOCK_DGRAM作为套接字类型 # sock.py python中的网络编程-socket篇 # 要创建套接字...套接字类型 SOCK_STREAM或SOCK_DGRAM # protocol通常省略,默认为0 # 为了创建TCP/IP套接字 # tcpSock = socket.socket(socket.AF_INET...() 被动接受TCP客户端链接,一直等待直到连接到达(阻塞) # 客户端套接字方法 # s.connect() 主动发起TCP服务器连接 # s.connect_ex()扩展版本,以错误码形式返回问题...,而不是抛出一个异常 # 普通的套接字方法 # s.recv() 接受TCP信息 # s.recv_into() 接受TCP信息到指定的缓冲区 # s.send()
领取专属 10元无门槛券
手把手带您无忧上云