python --- socket模块详解

简介: socket常用功能函数:  socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)                 #创建socket对象    socket families(地址簇):      AF_UNIX  ——————————   unix本机之间进行通信      AF_INET  ——————————    使用IPv4      AF_INET6  ——————————     使用IPv6        注:socket.socket()中第一个能使用上述值。

 

socket常用功能函数:

  socket.socket(family=AF_INETtype=SOCK_STREAMproto=0fileno=None)                 #创建socket对象

    socket families(地址簇):

      AF_UNIX  ——————————   unix本机之间进行通信

      AF_INET  ——————————    使用IPv4

      AF_INET6  ——————————     使用IPv6

        注:socket.socket()中第一个能使用上述值。

    socket types:

      SOCK_STREAM          # TCP套接字类型

      SOCK_DGRAM   # UDP套接字类型

      SOCK_RAW               #原始套接字类型,这个套接字比较强大,创建这种套接字可以监听网卡上的所有数据帧

      SOCK_RDM              #是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。

        注:这些常量都是套接字类型,应用于socket()函数中的第二个参数中.根据系统的不同,可能有更多的常数。只有SOCK_STREAMSOCK_DGRAM似乎通常很有用。

    协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAWCAN_BCM 。如果指定fileno,则忽略其他参数,从而导致具有指定文件描述器的套接字返回。socket.fromfd()不同,fileno将返回相同的套接字,而不是重复。这可能有助于使用socket.close()关闭分离的套接字,一般情况下后两个参数忽略即可

   socket.bind(address)                                 #将socket绑定到地址(常用于服务端)

      address地址的格式取决于地址族, 在AF_INET下,以元组(host,port)的形式表示地址。

   socket.listen([backlog])                       #启用服务器以接受连接(常用于服务端)

      backlog >=0,指定系统在拒绝新连接之前将允许的未接受连接的数量。如果未指定,则选择默认的合理值。

   socket.accept()                      #接收一个连接.该socket 必须要绑定一个地址和监听连接.返回值是一对(conn,address)。(常用于服务端)

      conn是socket对象,可以在该连接上发送和接收数据,address是连接另一端的地址。

   socket.recv(bufsize[, flags])                   #从socket接收数据,返回值是一个代表所收到的数据的字节对象。

      一次性接收的最大数据量由bufsize指定, 参数flags通常忽略。

   socket.send(data[, flags])                  #将数据发送到socket。

      python3中只能发送bytes类型的数据。

   socket.connect(address)              #连接到远程socket(常用于客户端)

      如果连接被信号中断,则该方法等待直到连接完成,或者如果信号处理程序没有引发异常并且套接字正在阻塞或者已经阻塞,则在超时时引入socket.timeout超时。对于非阻塞套接字,如果连接被信号中断(或由信号处理程序引发的异常),则该方法引发InterruptedError异常。

   socket.close()             #关闭socket

      注:被调用后,连接断开,socket不能在发送数据,连接另一端也将不在接收数据。

 

目录
相关文章
|
10月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
297 62
|
5月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
211 14
|
9月前
|
Python
Python Internet 模块
Python Internet 模块。
201 74
|
6月前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
75 8
|
6月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
94 5
|
10月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
244 63
|
7月前
|
Python API 监控
将Python CLI工具发布为pip模块的完整指南
注册PyPI账户 访问PyPI官网注册账户 推荐使用双因素认证增强安全性 生成API令牌 访问PyPI账户管理 生成具有"Upload packages"权限的令牌,妥善保存 确保模块名唯一性 在PyPI搜索页面验证模块名未被使用 建议使用小写字母和连字符的组合(如my-cli-tool)
132 9
|
10月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
213 61
|
10月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
10月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。

推荐镜像

更多