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服务器程序的步骤如下:

  1. 创建Socket对象
  2. 绑定端口号。
  3. 监听端口号。
  4. 等待客户端Socket的连接。
  5. 读取客户端发送过来的数据。
  6. 向客户端发送数据。
  7. 关闭客户端Socket连接。
  8. 监听端口号。
  9. 等待客户端Socket的连接。
  10. 读取客户端发送过来的数据。
  11. 向客户端发送数据。
  12. 关闭客户端Socket连接。
  13. 关闭服务端Socket连接。

Socket 套接字原理详解相关推荐

  1. 深入理解Socket套接字原理

    Socket套接字原理 1.什么是Socket 在计算机领域,套接字Socket作为计算机之间进行通信的固定的约定方式之一存在.这种太抽象了,我举个例子,我们要是用笔记本电脑前需要先对电脑供电,那供电 ...

  2. Socket(套接字)详解 画图+实例

    Socket概念 Socket本意为"插座",在Linux下,用于表示进程间网络通信的特殊文件类型,本质为内核借助缓冲区形成的伪文件. 既然是文件,那肯定就可以使用文件描述符引用套 ...

  3. TCP套接字编程详解

    目录 为什么socket编程又叫套接字编程? TCP服务端 初始化套接字库--WSAStarup 创建套接字--socket 绑定到本机 --bind 开始监听 --listen 连接客户端请求--a ...

  4. 【网络】网络基础套接字编程详解

      目录 网络初识 1.网络协议初识 2.网络协议的分层: OSI分层模型--->网络理论模型: TCP/IOP五层模型--->工业中采用的网络模型 为什么要有网络分层? 3.网络数据的封 ...

  5. 51单片机摇摇棒改字原理详解

    https://blog.csdn.net/qq_43367031/article/details/83095583?tdsourcetag=s_pctim_aiomsg

  6. python socket自动重连_详解python3中socket套接字的编码问题解决

    一.TCP 1.tcp服务器创建 #创建服务器 from socket import * from time import ctime #导入ctime HOST = '' #任意主机 PORT = ...

  7. Socket套接字通信 TCP UDP详解(网络通信)

    文章目录 一 什么是套接字Socket 1.Socket简介 2.Socket的域(domain) 3.Socket主要类型(type) 4.Socket基本工作流程 二 创建套接字Socket 1. ...

  8. Socket 套接字-通信方式

    转载自: 网络编程懒人入门(十四):到底什么是Socket?一文即懂! socket介绍及优缺点_考公,有没有上岸的的博客-CSDN博客_socket通信的特点 1.引言 对于即时通讯IM这方面的应用 ...

  9. Kafka 原理详解

    Kafka 原理详解 1 kakfa基础概念说明 Broker:消息服务器,就是我们部署的一个kafka服务 Partition:消息的水平分区,一个Topic可以有多个分区,这样实现了消息的无限量存 ...

最新文章

  1. usaco Network of Schools
  2. @autowired注解 抽象类_别再用ifelse了,用注解去代替他吧
  3. BugkuCTF-MISC题FileStoragedat
  4. 重新组织和重新生成索引(转载)
  5. 820. 单词的压缩编码
  6. dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
  7. Oracle学习笔记---(一)
  8. linux单用户模式single=1,Linux 单用户模式single mode
  9. CTR介绍,数据集往往为表格形式,训练集使用历史的日志数据,然后进行特征归一化、离散化和特征哈希等操作,最终一条训练集为一行多列的二分类任务。
  10. python课程设计实验报告-python课程设计
  11. 学习笔记16-HC05
  12. Tableau——其他参考方法
  13. 系统维护模式修改/etc/fstab
  14. Python基于Django的汽车维修保养系统(源码调试+讲解+文档)
  15. Archlinux arm的国内镜像源(for Banana Pi / Raspberry Pi , etc)
  16. 从 LoG 到 DoG 再到 XDoG, FDoG
  17. C1认证快速复习重点个人总结(一、计算机通识【下】),部分内容同任务文档
  18. python全栈开发-基本数据类型2 python_day_5
  19. 安卓镜像刻录软件_电脑运行安卓镜像 电脑引导安卓 安卓镜像
  20. Linux 内核自带的 LED 灯驱动

热门文章

  1. js根据经纬度计算多边形面积
  2. 听歌学日语2 五十音图 たなは行
  3. AAAI 2020:北大开源算法姿态辅助多摄像机协作以进行主动对象跟踪
  4. 王境泽表情包出处,怎么制作GIF动态图?
  5. Tunnel端口配置
  6. 解决无法完美卸载office2010的问题
  7. Leetcode跳跃游戏
  8. Ajax系列之三——服务器客户端交互
  9. 2.4 随机变量函数的分布
  10. OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)中