day18-网络编程
一、socket服务器
1. 什么是socket
- socket又叫套接字,指的是实现网络通信的两端
2. 服务器套接字
-
1)创建套接字对象
server = socket.socket()
socket(family=AF_INET, type=SOCK_STREAM)
family:设置ip类型;AF_INET:ipv4;AF_INET6:ipv6
type:设置传输协议类型;SOCK_STREAM:TCP传输协议;SOCK_DGRAM:UDP传输协议
-
2)绑定IP和端口
server.bind(('10.7.160.57', 1234))
bind(address):绑定地址
address:元组(IP地址,端口)
ip地址:通过ip地址可以确定互联网中唯一的一台计算机(字符串),运行服务器程序的计算机的ip地址
端口:端口是用来区分同一台计算机中的不同服务,范围是0-65535,其中0-1024是著名端口,不能随便使用
-
3)开始监听,同时设置最大在线客户端个数(设置同时在线人数)
- server.listen(200)
4)让服务器一直处于启动状态(通过死循环方式)
-
5)接收请求,返回建立的连接和客户端的地址
connection, addr = server.accept()
- 注意:当代码执行到这里的时候,会阻塞线程
-
6)接收客户端发送的消息
re_data = connection.recv(1024)
recv(一次性能够接收的最大值):返回值是接收到的数据,类型是二进制
re_message = re_data.decode(encoding='utf-8')
二进制数据和字符串的转换
a.二进制转字符串:
-str(二进制数据, encoding='utf-8')
-二进制.decode(encoding='utf-8')
b.字符串转二进制:
-bytes(字符串, 编码方式)
-字符串.encode()
-
7)发送消息
connection.send('hello'.encode())
-
8)关闭连接
connection.close()
二、socket客户端
1.客户端套接字
- 1)创建套接字对象
client = socket.socket()
- 2)直接连接服务器
client.connect(('10.7.160.57', 8000))
- connect((服务器地址, 服务器端口))
- 3)发送消息
client.send('hello'.encode())
- 4)接收消息
re_data = client.recv(1024)
re_message = re_data.decode(encoding='utf-8')
- 5)关闭连接
client.close()
三、requests的使用
1.requests
- requests是一个专门用来支持HTTP请求的一个第三方库
- 1)获取指定url对应的资源,返回时响应
response = requests.get(url)
response = requests.post(url)
- 2)获取响应头
response.headers
- 3)获取内容
- a.字符串格式的内容
response.text
- b.获取json内容
response.json()
- c.获取二进制内容
data = response.content
- a.字符串格式的内容