python实现套接字创建

目录
  • 1、网络协议  
  • 2、地址族  
  • 3、通过域名获取IP地址
  • 4、socket

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套接字的资料请关注我们其它相关文章!

(0)

相关推荐

  • python实现套接字创建

    目录 1.网络协议 2.地址族 3.通过域名获取IP地址 4.socket 1.网络协议 TCP / IP 是设备用于在 Internet 和大多数本地网络上进行通信的一组协议. TCP 更可靠,具有大量错误检查并需要更多资源. HTTP,SMTP 或 FTP 等服务使用它. UDP 的可靠性要差得多,错误检查的能力也有限,所需资源也更少. VoIP 等服务使用它. socket.SOCK_STREAM用于为 TCP 创建套接字,而socket.SOCK_DGRAM为 UDP 创建套接字. 2.

  • Python socket套接字实现C/S模式远程命令执行功能案例

    本文实例讲述了Python socket套接字实现C/S模式远程命令执行功能.分享给大家供大家参考,具体如下: 一. 前言 要求: 使用python的socket套接字编写服务器/客户机模式的远程命令执行脚本. serverCmd.py 远程机器上用来执行客户端发送命令的脚本 clientCmd.py 本地机器上,向远程服务器发送命令的脚本 servers.txt  本地机器上,存放所有的远程服务器IP地址文件(仅支持第一个IP) 发送:cmd [command]形式消息,让远程主机执行命令(本

  • Python原始套接字编程实例解析

    这篇文章主要介绍了Python原始套接字编程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_RAW进行数据发送. 使用SOCK_RAW的优势是,可以对数据包进行完整的修改,可以处理IP层上的所有数据包,对各字段进行修改,而不受UDP和TCP的

  • Python socket 套接字实现通信详解

    首先:我们介绍一下socket什么是socket: 1. socket 在操作系统中它是处于应用层与传输层的抽象层,它是一组操作起来非常简单的接口(接收数据的),此接口接受数据之后交个操作系统 那么为什么?直接给操作系统不是更方便吗?那么你就想错了 因为操作系统的接口远比我们想象的要丑陋复杂,使用操作系统交换数据,非诚繁琐,,开发者们只能想办法让一个中间人和他们打交道,来简单的实现数据交换,那么就是socket套接字.它的作用就是:与操作系统之间数据交换将这些繁琐的操作,进行高度化封装,和简化,

  • python原始套接字编程示例分享

    下面开始构造HTTP数据包, IP层和TCP层使用python的Impacket库,http内容自行填写. 复制代码 代码如下: #!/usr/bin/env python #-------------------------------------------------------------------------------# Name:     raw_http.py# Purpose:       construct a raw http get packet## Author:  

  • Python网络编程 Python套接字编程

    Python 提供了两个级别访问的网络服务. 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. socket()函数 Pyth

  • python socket网络编程步骤详解(socket套接字使用)

    一.套接字套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要.套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳.许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套接字的支持.三种最流行的套接

  • python使用原始套接字发送二层包(链路层帧)的方法

    发送端代码: #!/usr/bin/python # -*- coding: UTF-8 -*- import socket import struct raw_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x1234)) raw_socket.bind(("eth0", 0)) packet = struct.pack("!6s6sH", "\xff\xff

  • Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】

    本文实例讲述了Python 网络编程之TCP客户端/服务端功能.分享给大家供大家参考,具体如下: demo.py(TCP客户端): import socket def main(): # 1. 创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 # tcp_socket.connect(("192.168.33.11", 7890)) server_ip = input(

  • Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】

    本文实例讲述了Python 网络编程之UDP发送接收数据功能.分享给大家供大家参考,具体如下: demo.py(UDP发送数据): import socket # 导入socket模块 def main(): # 创建一个udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本机ip和端口号 (发送数据时,如果不绑定,系统会随机分配端口号.接收数据时,一般需要手动绑定ip和端口) udp_socket.b

随机推荐