- 客户端和服务器聊天,可以一直聊天,直到一方发送’拜拜’。然后就可以和下一个人一直聊
服务器:
from socket import socket
def create_server():
# 创建服务器的套接字对象
fd_server = socket()
'''
socket(family=AF_INET,type=SOCK_STREAM)
family:确定ip协议类型
AF_INET - ipv4 /AF_INET6 - ipv6/
type:传输协议类型
SOCK_STREAM - TCP协议/SOCK_DGRAM UDP协议/
'''
# 绑定ip地址和端口
fd_server.bind(('10.7.153.196',8080))
'''
bind((ip地址,端口))
端口: 一台电脑上一个端口标记一个唯一的服务。总共65535个端口,0-1024位特殊端口。
注意: 同一个端口同一时间只能绑定一个服务。
'''
# 开始监听
fd_server.listen(50)
'''
fd_listen(客户端最大连接数)
'''
# 让服务器处于运行状态
while True:
# 连接客户端,返回连接对象和客户端地址
# accept()会阻塞线程,直到客户端请求当前服务器
fd_client, addr = fd_server.accept()
while True:
print('用户',addr)
msg = input('输入内容:')
fd_client.send(msg.encode())
'''
send(data)
data: python3中要求类型是bytes,python2中可以字符串
字符串(str)转二进制(bytes):
方法1: 字符串.encode()
方法2: b'str'
方法3: bytes(字符串, 编码方式)
'''
# 接受从客户端发送过来的数据
recv_data = fd_client.recv(1024)
print(str(recv_data,'utf-8'))
'''
recv(buffsize)- recv()方法也会阻塞线程
buffsize: 每次能够接收的最大的字节数
返回值: 接受的数据
二进制转换为字符串:
方法1:bytes数据.decode()
方法2:str(bytes数据,编码方式)
'''
if msg == '拜拜':
fd_client.send('你的客户端已解除'.encode())
fd_server.close()
if __name__ == '__main__':
create_server()
客户端:
from socket import socket
def create_client():
# 创建套接字对象
fd_client = socket()
fd_server = socket()
# 连接服务器
fd_client.connect(('10.7.153.200',8080))
'''
connect(服务器地址)
'''
# 接受消息
while True:
recv_data = fd_client.recv(1024)
print(recv_data.decode())
# 发送消息
msg = input('输入内容:')
fd_client.send(msg.encode())
# 断开连接
if msg == '拜拜':
fd_client.send('我要关闭连接了,down'.encode())
fd_client.close()
if __name__ == '__main__':
create_client()
- 下载网络图片(https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2808438283,4249462766&fm=26&gp=0.jpg)到本地
import requests
def download_img(url):
cont = requests.get(url)
with open('./files/luffy.jpg','wb') as f:
f.write(cont.content)
if __name__ == '__main__':
url = 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2808438283,4249462766&fm=26&gp=0.jpg'
download_img(url)