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()

套接字的文件描述符。

相关文章
|
13天前
|
Python
Python中的异步编程:使用asyncio和aiohttp实现高效网络请求
【10月更文挑战第34天】在Python的世界里,异步编程是提高效率的利器。本文将带你了解如何使用asyncio和aiohttp库来编写高效的网络请求代码。我们将通过一个简单的示例来展示如何利用这些工具来并发地处理多个网络请求,从而提高程序的整体性能。准备好让你的Python代码飞起来吧!
35 2
|
20天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
63 6
|
9天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
38 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
13天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
39 3
|
19天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
111 1
|
21天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
47 4
|
21天前
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
39 1
|
23天前
|
数据采集 存储 机器学习/深度学习
构建高效的Python网络爬虫
【10月更文挑战第25天】本文将引导你通过Python编程语言实现一个高效网络爬虫。我们将从基础的爬虫概念出发,逐步讲解如何利用Python强大的库和框架来爬取、解析网页数据,以及存储和管理这些数据。文章旨在为初学者提供一个清晰的爬虫开发路径,同时为有经验的开发者提供一些高级技巧。
16 1
|
24天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
21 1
|
25天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型