socket介绍--数据的编码与解码
程序员文章站
2022-07-14 20:45:28
...
socket 介绍
思考
不同电脑上的进程之间如何通信?
首先通过 IP 地址找到网络中对应的电脑,然后通过传输协议和端口号来确定这个进程(运行起来
的软件),那么数据如何传输需要使用 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:表示忽略编解码不成功的字符,如果编解码不成功程序不会抛出异常
口诀:用什么编码就用什么解码