当前位置: 首页> 常识>

socket编程是什么

时间: 2024-08-01 08:15:22

socket编程

什么是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模块,默认情况下创建的是单进程单线程,同时只能处理一个连接请求,如果要实现多用户服务,那么需要使用多线程机制

相关推荐
  • 什么是场外基金(闲话场内基金和场外基金的区别)
    什么是场外基金(闲话场内基金和场外基金的区别)1、购买方式:场内基金需要在券商(如华泰证券、银河证券等等)开A股账户才能进行交易,类似于股票交易,而场外基金不需要开户,直接在支付宝、微信、天天基金或银行等平台直接购买。2、到账时间:场内基金赎回成功资金即时到账,一到账即可进行交易,提现则需要等到第二天,场外基金以支付宝为例要到第二天下午3点以后2025-06-07 02:28:35
  • 单签是什么意思(住房的房产抵押贷款单签可以吗?)
    单签是什么意思(住房的房产抵押贷款单签可以吗?)众所周知,在办理房产抵押贷款时,对借款人有很多要求。例如,在18-60岁之间,没有连三累六的逾期征信记录。收入稳定,负债率低于50%,有能力偿还贷款本息。此外,根据大多数银行对房产抵押贷款的相关规定,如果结婚,贷款的处理必须由夫妻俩签字才能申请。那么,抵押房产贷款可以单独签署吗?所谓“ 单签 ”,其2025-06-06 15:47:05
  • 公务卡一般都什么人有(公务卡的申请条件和流程)
    公务卡一般都什么人有(公务卡的申请条件和流程)所谓公务卡,是指预算单位工作人员持有的,主要用于日常公务支出和财务报销业务的银行信用卡(贷记卡),公务卡制度的直接作用是将传统现金支付结算改为用公务卡支付结算。大多银行都是支持公务卡办理的,以中行为例:一、中国银行长城公务卡申请条件凡大型跨国企业、世界 500 强企业在华分支、大中型国有企业、上市公2025-06-06 13:55:18
  • 三插头褐色为什么线(插座3个端口和三芯电源线的正确接线方法)
    三插头褐色为什么线(插座3个端口和三芯电源线的正确接线方法)说说插座 3 个端口和三芯电源线的正确接线方法!1. 很多用户买回去的插座有三个端口,接第一个端口和第二个端口,中间端口不接。一般农村的线接两根,即火线和零线,三根线的接法不清楚会导致插座无电源或触电。2. 看正确接线方法,插座已标好,第一脚接地,接地线有黄线或绿线;第二脚接火线,是 L;第三脚接零2025-05-09 12:07:20
  • 荷花为什么要在早上开花(荷花逐渐开了。)
    荷花为什么要在早上开花(荷花逐渐开了。)荷花是水生植物,花期在6~9月之间。荷花一般在早上开放,会在下午合拢,这主要是光照所致。用盆(缸)栽植的荷花,花期的早晚除与品种有关外,还与光照、温度、湿度等条件有关。如果是早熟品种,如寿星桃、红碗莲等,可在6月底至7月初翻盆(缸)再植,这种方法能使早熟的荷花推迟至10月初开花;如果是晚熟品种,翻盆2025-05-08 03:04:39