socket编程
套接字:指的就是通过代码来创建实现通信的两个端 服务器端和客户端
socket一般可以基于TCP(可靠传输)和UDP(可不靠传输) 实现客户端和服务器之间的可靠传输和不可靠传输
python 中的内置模块socket可以支持socket编程
import socket
服务器端
1.创建服务器套接字对象
server = socket.socket()
family 参数确定服务类型 AF_INET -->ipv4 AF_INET6 --> IPV6
type确定传输协议类型 SOCK_STREAM --> TCP协议 SOCK_DGRAM --> UDP协议
参数都有默认值
2.绑定IP地址和端口
server.bind((ip,端口))
Address:(ip地址字符串,端口号)
端口号是用来区分一个计算机中不同的服务,范围是 0 ~ 65535
一般使用 8080端口进行测试
1.其中 0 ~ 1024是著名端口,用来绑定一些特殊服务
2.同一时间同一端口只能绑定一个服务
3.监听请求
server.listen(50)
参数用来限制一次性能够接受的客户端请求数量
保证服务器处于一直启动的状态
while True:
4.接受客户端的请求
client,addr = server.accept()
accept()会阻塞线程,当有客户端给这个服务器发送请求时,才会开始执行
5.给客户端发送信息
str1 = input('发送客户端:')
client.send(bytes(str1.encoding='utf-8'))
send(数据):数据必须是二进制数据(bytes)类型
bytes(字符串,encoding='编码方式')
字符串.encode(encoding=编码方式)
6.接受从客户端发来的消息
data = client.recv(1024)
str1 = str(data,encoding='utf-8')
recv的参数设置缓存大小 单位是字节
二进制(bytes)转换成字符串(str):
a. str(二进制数据,encoding ='utf-8')
b. data.decode(encoding = 'utf-8')
7.关闭连接
client.close()
客户端
1.创建套接字对象
client = socket.socket()
2.连接服务器
client.connect(('10.7.181.61',8080))
3.发送信息
str = input('--》》》')
client.send('安排'.encode(encoding='utf-8'))
4.接受信息
data = client.recv(1024)
print('接受到的服务器数据:',data.decode(encoding='utf-8'))