python实现套接字创建

 更新时间:2022年05月25日 17:05:58   作者:林海峰4573  
这篇文章主要为大家介绍了python套接字创建实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1、网络协议
  

TCP / IP 是设备用于在 Internet 和大多数本地网络上进行通信的一组协议。 TCP 更可靠,具有大量错误检查并需要更多资源。 HTTP,SMTP 或 FTP 等服务使用它。 UDP 的可靠性要差得多,错误检查的能力也有限,所需资源也更少。 VoIP 等服务使用它。

socket.SOCK_STREAM用于为 TCP 创建套接字,而socket.SOCK_DGRAM为 UDP 创建套接字。

2、地址族
  

创建套接字时,必须指定其地址族,在套接字中使用该类型。

AF_UNIX,AF_LOCAL-本地通讯

AF_INET-IPv4 Internet 协议

AF_INET6-IPv6 Internet 协议

AF_IPX-IPX-Novell 协议

AF_BLUETOOTH-无线蓝牙协议

AF_PACKET-底层数据包接口

对于AF_INET​地址族,指定了一对(主机,端口)。 host​是一个字符串,表示互联网域表示法中的主机名(如example.com​)或 IPv4 地址(如93.184.216.34),并且 port 是整数。

3、通过域名获取IP地址

import socket
ip = socket.gethostbyname("geek-docs.com")
print(ip)

4、socket

TCP ipv4
import socket
# 创建用于IPV4的TCP套接字
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    # 工作时间服务器的主机名和端口
    host = "time.nist.gov"
    port = 13
    # 连接到远程套接字
    s.connect((host, port))
    # 将数据发送到套接字。套接字必须连接到远程套接字。从字节发送数据,直到发送完所有数据或发生错误为止
    s.sendall(b'')
    print(str(s.recv(4096), 'utf-8'))
# HEAD请求:HEAD 请求是没有消息正文的 GET 请求。 请求/响应的标头包含元数据,例如 HTTP 协议版本或内容类型。
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(("webcode.me", 80))
    s.sendall(b"HEAD / HTTP/1.1\r\nHost: webcode.me\r\nAccept: text/html\r\n\r\n")
    print(str(s.recv(1024), 'utf-8'))
#GET 请求:请求指定资源的表示形式。 使用 GET 的请求应仅检索数据
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(("webcode.me", 80))
    # 对于 HTTP 1.1 协议,默认情况下,连接可以是持久的。 这就是为什么我们发送Connection: close标头的原因。
    s.sendall(b"GET / HTTP/1.1\r\nHost: webcode.me\r\nAccept: text/html\r\nConnection: close\r\n\r\n")
    while True:
        data = s.recv(1024)
        if not data:
            break
        print(data.decode())
#回显客户端服务器示例
import socket
import time
with socket.socket() as s:
    host = 'localhost'
    port = 8001
    s.bind((host, port))
    print(f'socket binded to {port}')
    s.listen()
    con, addr = s.accept()
    with con:
        while True:
            data = con.recv(1024)
            if not data:
                break
            con.sendall(data)
#异步服务器
import asyncio
async def handle_client(reader, writer):
    data = (await reader.read(1024))
    writer.write(data)
    writer.close()
loop = asyncio.get_event_loop()
loop.create_task(asyncio.start_server(handle_client, 'localhost', 8001))
loop.run_forever()

以上就是python套接字创建的详细内容,更多关于python套接字的资料请关注脚本之家其它相关文章!

相关文章

  • Python操作sqlite3快速、安全插入数据(防注入)的实例

    Python操作sqlite3快速、安全插入数据(防注入)的实例

    这篇文章主要介绍了Python操作sqlite3快速、安全插入数据(防注入)的实例,通过在一个表格中进行操作来论述如何使用Python快速安全地操作sqlite3,需要的朋友可以参考下
    2014-04-04
  • OpenCV-Python实现腐蚀与膨胀的实例

    OpenCV-Python实现腐蚀与膨胀的实例

    形态学操作主要包含:腐蚀,膨胀,开运算,闭运算,形态学梯度运算,顶帽运算,黑帽运算等操作,本文主要介绍了腐蚀与膨胀,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python在CMD界面读取excel所有数据的示例

    python在CMD界面读取excel所有数据的示例

    这篇文章主要介绍了python在CMD界面读取excel所有数据,帮助大家更好的利用python办公,感兴趣的朋友可以了解下
    2020-09-09
  • 利用Python进行异常值分析实例代码

    利用Python进行异常值分析实例代码

    数据挖掘工作中的第一步就是异常值检测,异常值的存在会影响实验结果。下面这篇文章主要给大家介绍了关于利用Python进行异常值分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • 手把手教你用Django执行原生SQL的方法

    手把手教你用Django执行原生SQL的方法

    这篇文章主要介绍了手把手教你用Django执行原生SQL的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python编码总结(编码类型、格式、转码)

    python编码总结(编码类型、格式、转码)

    这篇文章主要介绍了python编码操作,包括编码类型、格式、转码等,并结合实例分析了相关操作技巧与注意事项,需要的朋友可以参考下
    2016-07-07
  • Python群发邮件实例代码

    Python群发邮件实例代码

    今天试了试Python发邮件,突然想到能不能群发邮件呢?群发邮件是smtplib的一个bug,不过最终还是解决了
    2014-01-01
  • Python使用PymuPDF处理PDF文件的操作详解

    Python使用PymuPDF处理PDF文件的操作详解

    Python 中的 PymuPDF 是一个强大的库,可以让你轻松地处理 PDF 文件,本文将深入探讨 PymuPDF 的用法,包括打开、读取、修改和创建 PDF 文件,以及文本提取和页面操作,感兴趣的朋友可以参考下
    2023-12-12
  • python爬虫 基于requests模块的get请求实现详解

    python爬虫 基于requests模块的get请求实现详解

    这篇文章主要介绍了python爬虫 基于requests模块的get请求实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python中用append()连接后多出一列Unnamed的解决

    Python中用append()连接后多出一列Unnamed的解决

    Python中用append()连接后多出一列Unnamed的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论