搜索
首页后端开发Python教程python中socket网络编程的详细介绍(附示例)

本篇文章给大家带来的内容是关于python中socket网络编程的详细介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

网络通信的三要素

  • IP

通信的时候, 双方必须知道对方的标识, 好比发邮件必须知道对方的邮件地址。 互联网上每个计算机的唯一标识就是IP地址, 类似 123.123.123.123 。

IP地址实际上是一个32位整数(称为IPv4) , 以字符串表示的IP地址,如 192.168.0.1 实际上是把32位整数按8位分组后的数字表示, 目的是便于阅读。
IPv6地址实际上是一个128位整数, 它是目前使用的IPv4的升级版, 以字符串表示。类似于 2001:0db8:85a3:0042:1000:8a2e:0370:7334 。
  • 端口port

在两台计算机通信时, 只发IP地址是不够的, 因为同一台计算机上跑着多个网络程序。 一个IP包来了之后, 到底是交给浏览器还是QQ, 就需要端口号来区分。

每个网络程序都向操作系统申请唯一的端口号, 这样, 两个进程在两台计算机之间建立网络连接就需要各自的IP地址和各自的端口号。

  • TCP/UDP协议

为了把全世界的所有不同类型的计算机都连接起来, 就必须规定一套全球通用的协议,大家把互联网的协议简称TCP/IP协议

socket编程

Socket是网络编程的一个抽象概念。 通常我们用一个Socket表示“打开了一个网络链接”, 而打开一个Socket需要知道目标计算机的IP地址和端口号, 再指定协议类型即可。

import socket
# socket.gethostname()当不传入参数时,返回本机主机名
print(socket.gethostname()) #DESKTOP-EN0LQJH

#域名(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称
#通过域名查找服务器IP地址
print(socket.gethostbyname('www.baidu.com'))    #119.75.216.20

#通过一个IPv4的地址来获取主机信息
print(socket.gethostbyaddr('114.114.114.114'))

#通过IP/port组合,访问服务器信息
# 如果是AF_INET则格式为:(address, port),如果为AF_INET6,则返回(address, port, flow info, scope id)

print(socket.getaddrinfo('www.xunlei.com',80))

910764585-5bb9dc60ae25d_articlex.png

用socket实现简易的web服务器

import socket
def reply_info(socketObj):
    # socketObj.send('ok')
    with open('hello.html') as f:
        socketObj.send(f.read().encode('utf-8'))
if __name__=="__main__":
    #1. 创建socket对象
    socket_server = socket.socket()
    #2. 绑定IP和端口
    socket_server.bind(('192.168.1.165',9999))
    print("服务器端已经启动9999端口......")
    #3. 监听是否有客户端连接
    socket_server.listen(5)

    while True:
        # 4. 接受客户端的连接
        socket_client,address = socket_server.accept()
        # 5. 接收客户端发来的信息
        data = socket_client.recv(1024)
        # 6. 与客户端进行交互, 返回给客户端信息
        reply_info(socket_server)
        socket_server.close()

以上是python中socket网络编程的详细介绍(附示例)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault思否。如有侵权,请联系admin@php.cn删除
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版