0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

socket编程到底是什么

工程师邓生 来源:python猿 作者:python猿 2020-01-16 17:36 次阅读

什么是socket?

简称套接字,是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多数是基于socket来完成通信的。

socket是基于C/S架构的,也就是说socket网络编程,通常需要写两个文件,一个服务端,一个客户端。

Python中的socket通信逻辑如下图所示

在python中,用socket.socket()方法来创建套接字

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

参数说明:

family:套接字家族,可以使用AF_UNIX或者AF_INET

type:套接字类型,分为SOCK_STREAM或者SOCK_DGRAM,分别代表TCP和UDP

protocol: 一般不填默认为0

注意

1、python3以后,socket传递的都是bytes类型的数据,字符串需要先转换一下,string.encode()即可;另一端在接收数据的时候需要bytes转换成字符串,只要bytes.decode()一下就可以

2、在正常通信时,accept()和recv()方法都是阻塞的。所谓的阻塞,指的是程序会暂停在哪,一直等数据过来

socket编程思路

服务端 TCP

1 创建套接字,绑定套接字到本地IP与端口:socket.socket(scoket.AF_INET,socket.SOCK_STREAM), s.bind()

2 开始监听链接:s.listen()

3 进入循环,不断接受客户端的链接请求:s.accept()

4 接收传来的数据,或者发送数据给对方:s.recv() , s.sendall()

5 传输完毕后,关闭套接字:s.close()

客户端

1 创建套接字,连接服务器地址:socket.socket(scoket.AF_INET,socket.SCOK_STREAM),s.connect()

2 连接后发送数据和接收数据: s.sendall(),s.recv()

3 传输完毕后,关闭套接字:s.close()

python的socket编程,通常可以分为TCP和UDP编程两种,前者是连接的可靠传输服务,每次通信都要握手,结束传输也要挥手,数据会被检验,是使用最广的通用模式;后者是不带连接的传输服务,简单粗暴

TCP编程

服务器端:

客户端:

虽然服务器和客户端在一对一的情况下,工作良好,但是,如果有多个客户端同时连接同一个服务器呢?结果可能不太令人满意,因为服务器无法同时对多个客户端提供服务。为什么会这样呢?因为Python的socket模块,默认情况下创建的是单进程单线程,同时只能处理一个连接请求,如果要实现多用户服务,那么需要使用多线程机制

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Socket
    +关注

    关注

    0

    文章

    179

    浏览量

    34408
  • 编程
    +关注

    关注

    88

    文章

    3439

    浏览量

    92325
收藏 人收藏

    评论

    相关推荐

    共享单车到底是什么通信原理

    我们经常骑的共享单车到底是什么通信原理,有人了解过吗? 一、智能车锁 共享单车最核心的硬件是智能车锁,主要用于实现控制和定位功能。
    发表于 04-09 10:33 174次阅读
    共享单车<b class='flag-5'>到底是</b>什么通信原理

    共享单车到底是什么通信原理?

    我们经常骑的共享单车到底是什么通信原理,有人了解过吗?下面宝蓝小编就带大家了解下。
    的头像 发表于 02-25 10:32 496次阅读
    共享单车<b class='flag-5'>到底是</b>什么通信原理?

    物联网LWIP之socket编程

    Socket的位置,作为用户层与其他层的交互媒介。LWIP实现Socket需要操作系统的帮助,如下图所示。二,Socket编程的基础知识1.大端模式,小端模式(1)大端模式
    的头像 发表于 01-18 08:00 541次阅读
    物联网LWIP之<b class='flag-5'>socket</b><b class='flag-5'>编程</b>

    去耦滤波电容怎么布局摆放,到底是先大后小还是先小后大?

    去耦滤波电容怎么布局摆放,到底是先大后小还是先小后大?
    的头像 发表于 12-04 15:43 1320次阅读
    去耦滤波电容怎么布局摆放,<b class='flag-5'>到底是</b>先大后小还是先小后大?

    请问AD9684最低采样率到底是多少?

    关于AD9684最低采样率,数据手册有两处描述,但是不一致。请问AD9684最低采样率到底是多少?
    发表于 12-04 06:34

    Socket 网络编程框架介绍

    Socket 网络编程框架 Socket(套接字)是一个网络编程概念,描述了一个通信端点(Endpoint),用于建立网络连接(Connection)并传输数据。 Linux Kern
    的头像 发表于 11-09 14:19 319次阅读
    <b class='flag-5'>Socket</b> 网络<b class='flag-5'>编程</b>框架介绍

    呼吸灯到底是如何影响人的视觉的?

    呼吸灯到底是通过使灯快速亮灭还是改变平均电压来影响人的视觉的
    发表于 11-08 06:04

    请问单片机的中断系统到底是什么?

    中断系统到底是什么?还搞不定
    发表于 11-07 07:40

    上拉电阻到底是咋完成上拉的啊?

    上拉电阻到底是咋完成上拉的啊
    发表于 10-31 06:52

    单片机的“性能”到底是什么?

    单片机的“性能”到底是什么?
    的头像 发表于 10-24 16:58 276次阅读
    单片机的“性能”<b class='flag-5'>到底是</b>什么?

    AT指令,AT固件,这个AT到底是什么意思?

    我们常说AT指令,AT固件,这个AT到底是什么意思?
    发表于 09-26 07:25

    物联网卡的流量到底是什么?超全详解!

    物联网卡的流量到底是什么?超全详解!
    的头像 发表于 08-31 09:13 922次阅读
    物联网卡的流量<b class='flag-5'>到底是</b>什么?超全详解!

    射频设计中的互调失真到底是如何发生的呢?如何预防?

    互调是射频设计避免对的一个问题,到底是如何发生的呢?我们一起来学习下。
    发表于 08-12 11:30 800次阅读
    射频设计中的互调失真<b class='flag-5'>到底是</b>如何发生的呢?如何预防?

    续流二极管到底是什么?

    续流二极管到底是什么
    发表于 06-26 07:55

    滤波器到底是什么呢?滤波有什么用呢?

    在关于雷达原理的说明中,经常见到各种滤波器的描述,那滤波器到底是什么呢?
    的头像 发表于 05-24 11:12 2889次阅读