IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Socket套接字 -> 正文阅读

[网络协议]Socket套接字

Socket

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层。
Socket利用三元组(IP地址,协议,端口)可以唯一标识进程,在不同的计算机中通信。

socket官方文档https://docs.python.org/3/library/socket.html

Socket()函数

用 socket()函数来创建套接字,语法格式如下:

socket.socket([family[, type[, proto]]])

fimaly:套接字家族,常用AF_INET
type:两端点的通信类型,SOCK_STREAM流式套接字,用于面向连接的协议(TCP);SOCK_DGRAM数据报套接字,用于面向无连接的协议(UDP);SOCK_RAW原始套接字,常用在ICMP。
protocol:用于标识域和类型中的协议的变体,通常缺省,默认为0。
只有相同类型的套接字才能通信。

Socket内建方法

服务器:
s.bind((host,port)):绑定地址(host,port)到套接字。
s.listen(backlog):设置并启动TCP侦听器。backlog 指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为 1,常设为 5 。
s.accept(): 被动接受TCP客户端连接,(阻塞式)等待连接的到来。

客户端:
s.connect(address):主动初始化TCP服务器连接。
s.connect_ex(address):connect()函数的扩展版本,出错时返回出错码,而不是抛出异常。

公共用途:
s.recv(bufsize[,flags]):接收 TCP 数据,数据以字符串形式返回,bufsize 指定要接收的最大数据量。
s.send(bytes[,flags]):发送 TCP 数据,将 string 中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于 string 的字节大小。
s.recvfrom(bytes[,flags]):接收 UDP 数据,但返回值是(bytes,address)。
s.sendto(bytes[,flags],address):发送 UDP 数据,将数据发送到套接字,address 是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
s.settimeout(timeout):设置套接字操作的超时期,timeout是一个浮点数,单位是秒。值为None表示没有超时期。一般,超时期应该在刚创建套接字时设置,因为它们可能用于连接的操作(如connect())。

菜鸟教程:https://www.runoob.com/Python/python-socket.html

Socket通信流程

在这里插入图片描述
参考博客;https://www.cnblogs.com/liqb/p/9371748.html

例子

1.回声服务器
echo-server.py:

#!/usr/bin/env python3

import socket

HOST = '127.0.0.1'  # Standard loopback interface address (localhost)
PORT = 65432        # Port to listen on (non-privileged ports are > 1023)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

echo-client.py:

#!/usr/bin/env python3

import socket

HOST = '127.0.0.1'  # The server's hostname or IP address
PORT = 65432        # The port used by the server

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)

print('Received', repr(data))

官方文档:https://realpython.com/python-sockets/#echo-client-and-server
分析参考:https://zhuanlan.zhihu.com/p/44722743

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:18:17  更:2021-09-03 12:20:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/27 1:51:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码