欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

socket介绍--数据的编码与解码

程序员文章站 2022-07-14 20:45:28
...

socket 介绍

思考

  • 不同电脑上的进程之间如何通信?
    首先通过 IP 地址找到网络中对应的电脑,然后通过传输协议和端口号来确定这个进程(运行起来
    的软件),那么数据如何传输需要使用 socket 来完成,也就是进程之间通信使用 socket.

  • 那问题又来了,什么是进程? 什么是进程间通信?
    所谓进程指的是:运行的程序或者软件称之为进程(过几天更新多任务编程时进行详细讲解)
    所谓进程间通信指的是:运行的程序之间的数据共享

  • 什么是 socket?
    socket(简称 套接字) 是进程间通信一个工具,它能实现把数据从一方传输到另外一方,完成不同电脑上进程之间的通信, 它好比数据的搬运工。

socket 使用场景

不夸张来说,只要跟网络相关的应用程序或者软件都使用到了socket, 比如:
socket介绍--数据的编码与解码
socket介绍--数据的编码与解码

数据编码和解码

str->bytes:encode编码
bytes->str:decode解码

字符串通过编码成为字节码,字节码通过解码成为字符串。

>>> text = '我是文本'
>>> text
'我是文本'
>>> print(text)
我是文本
>>> bytesText = text.encode()
>>> bytesText
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> print(bytesText)
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> type(text)
<class 'str'>
>>> type(bytesText)
<class 'bytes'>
>>> textDecode = bytesText.decode()
>>> textDecode
'我是文本'
>>> print(textDecode)
我是文本

其中decode()与encode()方法可以接受参数,其声明分别为:

bytes.decode(encoding="utf-8", errors="strict")
str.encode(encoding="utf-8", errors="strict")

其中的encoding是指在解码编码过程中使用的编码格式,errors是指错误的处理方案。

socket的bind方法可以给程序的套接字绑定端口号

注意:

strict:表示严格按照指定编解码方式进行编码和解码,如果编解码不成功则抛出异常
ignore:表示忽略编解码不成功的字符,如果编解码不成功程序不会抛出异常
口诀:用什么编码就用什么解码

相关标签: socket 编码解码