Socket 套接字原理详解
Socket 套接字原理详解
socket 编程介绍
Socket编程封装了常见的TCP、UDP操作,可以实现非常方便的网络编程。
socket() 函数介绍
# socket.socket(family,type)
tcpSocket=socket.socket(AF_INET, SOCK_STREAM)
# family 地址系列应为 AF_INET(IPv4), AF_INET6(IPv6)
# type 套接字类型应为 SOCK_STREAM(默认值),SOCK_DGRAM
# SOCK_STREAM 是基于 TCP 的,有保障的(即能保证数据正确传送到对方)面向连接的 SOCKET,多用于资料传送。
# SOCK_DGRAM 是基于 UDP 的,无保障的面向消息的 socket,多用于在网络上发广播信息
在 Python 语言标准库中,通过使用 socket 模块提供的 socket 对象,可以在计算机网络中建立可以互相通信的服务器与客户端。在服务器端需要建立一个 socket 对象,并等待客户端的连接。客户端使用 socket 对象与服务器端进行连接,一旦连接成功,客户端和服务器端就可以进行通信了。在每次通信结束后,都需要使用 close() 方法关闭 Socket。
socket 对象的内置函数和属性
函数 | 功能 |
---|---|
s.bind() | 绑定地址(host,port)到套接字,在AF_INET下,以元组(host,port)的形式表示地址。 |
s.listen() | 开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。 |
s.accept() | 被动接受TCP客户端连接,(阻塞式)等待连接的到来 |
s.connect() | 主动初始化TCP服务器连接,。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。 |
s.recv() | 接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。 |
s.send() | 发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字 |
s.close() | 关闭套接字 |
s.recvfrom() | 接收UDP数据,与recv()类似,但返回值是data,address)。其中data是包含接收数据的字符 |
s.sendto() | 发送UDP数据,将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发 |
UDP 编程介绍
UDP 协议时,不需要建立连接,只需要知道对方的 IP 地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。虽然用UDP 传输数据不可靠,但它的优点是和 TCP比,速度快,对于不要求可靠到达的数据,就可以使用 UDP 协议。
创建 Socket 时,SOCK_DGRAM 指定了这个 Socket 的类型是UDP。绑定端口和 TCP 一样,但是不需要调用 listen() 方法,而是直接接收来自任何客户端的数据。recvfrom() 方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用 sendto() 就可以把数据用 UDP 发给客户端。
TCP编程介绍
面向连接的 Socket 使用的协议是 TCP 协议。TCP 的 Socket 名称是 SOCK_STREAM。 创建套接字 TCP 套接字,可以调用 socket.socket()。
在Python语言中创建Socket服务端程序,需要使用socket模块中的socket类。创建Socket服务器程序的步骤如下:
- 创建Socket对象
- 绑定端口号。
- 监听端口号。
- 等待客户端Socket的连接。
- 读取客户端发送过来的数据。
- 向客户端发送数据。
- 关闭客户端Socket连接。
- 监听端口号。
- 等待客户端Socket的连接。
- 读取客户端发送过来的数据。
- 向客户端发送数据。
- 关闭客户端Socket连接。
- 关闭服务端Socket连接。
Socket 套接字原理详解相关推荐
- 深入理解Socket套接字原理
Socket套接字原理 1.什么是Socket 在计算机领域,套接字Socket作为计算机之间进行通信的固定的约定方式之一存在.这种太抽象了,我举个例子,我们要是用笔记本电脑前需要先对电脑供电,那供电 ...
- Socket(套接字)详解 画图+实例
Socket概念 Socket本意为"插座",在Linux下,用于表示进程间网络通信的特殊文件类型,本质为内核借助缓冲区形成的伪文件. 既然是文件,那肯定就可以使用文件描述符引用套 ...
- TCP套接字编程详解
目录 为什么socket编程又叫套接字编程? TCP服务端 初始化套接字库--WSAStarup 创建套接字--socket 绑定到本机 --bind 开始监听 --listen 连接客户端请求--a ...
- 【网络】网络基础套接字编程详解
目录 网络初识 1.网络协议初识 2.网络协议的分层: OSI分层模型--->网络理论模型: TCP/IOP五层模型--->工业中采用的网络模型 为什么要有网络分层? 3.网络数据的封 ...
- 51单片机摇摇棒改字原理详解
https://blog.csdn.net/qq_43367031/article/details/83095583?tdsourcetag=s_pctim_aiomsg
- python socket自动重连_详解python3中socket套接字的编码问题解决
一.TCP 1.tcp服务器创建 #创建服务器 from socket import * from time import ctime #导入ctime HOST = '' #任意主机 PORT = ...
- Socket套接字通信 TCP UDP详解(网络通信)
文章目录 一 什么是套接字Socket 1.Socket简介 2.Socket的域(domain) 3.Socket主要类型(type) 4.Socket基本工作流程 二 创建套接字Socket 1. ...
- Socket 套接字-通信方式
转载自: 网络编程懒人入门(十四):到底什么是Socket?一文即懂! socket介绍及优缺点_考公,有没有上岸的的博客-CSDN博客_socket通信的特点 1.引言 对于即时通讯IM这方面的应用 ...
- Kafka 原理详解
Kafka 原理详解 1 kakfa基础概念说明 Broker:消息服务器,就是我们部署的一个kafka服务 Partition:消息的水平分区,一个Topic可以有多个分区,这样实现了消息的无限量存 ...
最新文章
- usaco Network of Schools
- @autowired注解 抽象类_别再用ifelse了,用注解去代替他吧
- BugkuCTF-MISC题FileStoragedat
- 重新组织和重新生成索引(转载)
- 820. 单词的压缩编码
- dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
- Oracle学习笔记---(一)
- linux单用户模式single=1,Linux 单用户模式single mode
- CTR介绍,数据集往往为表格形式,训练集使用历史的日志数据,然后进行特征归一化、离散化和特征哈希等操作,最终一条训练集为一行多列的二分类任务。
- python课程设计实验报告-python课程设计
- 学习笔记16-HC05
- Tableau——其他参考方法
- 系统维护模式修改/etc/fstab
- Python基于Django的汽车维修保养系统(源码调试+讲解+文档)
- Archlinux arm的国内镜像源(for Banana Pi / Raspberry Pi , etc)
- 从 LoG 到 DoG 再到 XDoG, FDoG
- C1认证快速复习重点个人总结(一、计算机通识【下】),部分内容同任务文档
- python全栈开发-基本数据类型2 python_day_5
- 安卓镜像刻录软件_电脑运行安卓镜像 电脑引导安卓 安卓镜像
- Linux 内核自带的 LED 灯驱动