python——Socket网络编程(详细讲解)(二)

简介: python——Socket网络编程(详细讲解)(二)

本文转载:https://xiaochuhe.blog.csdn.net/article/details/122684715
一、简介
功能:socket也叫套接字,主要用来实现网络中不通计算机之间的通信。
模块:两个模块,服务端模块和客户端模块
过程:当创建了一个服务器Socket之后,服务端Socket就会先在一个端口上等待连接,客户端socket访问这个端口,当两者完成连接后,就可以实现交互访问。
二、基本用法
(1)socket()实例化
语法格式:

Socket.scoket([family[,type[,proto]]]) protocol协议

参数:

Family:套接字家族可以使用AF_UNIX或者AF_INET(用的多,ip地址)

type:套接字类型,可以根据是面向连接的还是非面向连接的分为SCOK_STREAMZ或SOCK_DGRAM

protocol:一般不填,默认为0

例子:
如果希望初始化一个TCP类型的socket,可使用如下语句:

s =socket.socket()或者: s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
初始化一个UDP类型的Socket,可使用如下语句:

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
(2 )Socket常用函数
s.bind(address)

将套接字绑定到地址,address 地址格式取决与地址簇,在AF_INET下,以元组(host,port)的形式表示地址。
s.listen(backlog)

开始监听传入连接,backlog指定在拒绝连接之前,可以挂起的最大连接数量。至少为1

比如:backlog = 5,表示内核已经接到了连接请求,但服务器还没有调用accpet进行处理的连接个数最大为5,这个值不能无限大,因为要在内核中维护连接队列。
s.setblocking(bool)

是否阻塞(默认True),如果设置成了False,当accept和recv没有数据时,会报错。
s.accept()

接收连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址,接收TCP客户的连接(阻塞)等待连接的到来。
s.connect(address)

连接address处的套接字,通常情况下,address格式为元组(hostname,port),如果连接出错,则返回socker.error错误。
s.connect_ex (address)

功能同上,不同的是有返回值,连接成功时返回0,反之则返回编码,如10061.
s.close()

关闭套接字
s.recv(bufsize[,flag])

接收套接字的数据,数据以字符串形式返回,bufsize指定最多可以接收的数量,flag提供有关消息的其他信息,可以忽略。
s.recvfrom(bufsize[,flag])

与recv()类似,但返回值是(data,address),其中data是接收数据的字符串,addres是发送数据的套接字地址
s.send(string[,flag])

将string中的数据发送到连接的套接字,返回值是要发送的字节数量,就该数量可能小于string的字节大小。即:可能未将指定内容全部发送。
s.sendall(string[,flag])

将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有的数据,成功返回None,失败则抛出异常。
s.sendto(string[,flag],address)

将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址,返回值是发送的字节数,该函数主要用于UDP协议。
s.settimeout(timeout)

设置套接字操作的超时期,timeout是浮点数,单位是秒,值为None表示没有超时期。

s.getpeername()

返回连接套接字的远程地址,返回值是元组(ipaddr,port)
s.getsockname()

返回套接字自己的地址,返回值是元组(ipaddr,port)
s.fileno()

套接字的文件描述符。

相关文章
|
21天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
221 55
|
2月前
|
Python
Python中的异步编程:使用asyncio和aiohttp实现高效网络请求
【10月更文挑战第34天】在Python的世界里,异步编程是提高效率的利器。本文将带你了解如何使用asyncio和aiohttp库来编写高效的网络请求代码。我们将通过一个简单的示例来展示如何利用这些工具来并发地处理多个网络请求,从而提高程序的整体性能。准备好让你的Python代码飞起来吧!
91 2
|
2月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
121 6
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
160 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
6天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
74 3
|
2月前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
57 6
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
73 8
|
2月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
94 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络