socket编程
from socket import*
socket又叫套接字,指的是实现通信的两个端,这两个端又分为服务器套接字和客户端套接字
Python中提供了一个socket模块来支持socket编程
1、服务器套接字
1)创建套接字对象
socket(family=AF_INET, type= SOCK_STREAM)
family ——设置ip类型,AF_INET-ipv4, AF_INET6-ipv6
type ——设置数据的传输方式,SOCK_STREAM-TCP协议,SOCK_DGRAM-UDP
2)绑定ip和端口
bind((ip地址,端口号))
ip地址 -字符串;服务器程序运行在哪台计算机上,ip地址就写哪台计算机的ip
端口号 -整型;范围是0-65535,其中0-1024是著名端口,有自己的特殊意义一般不使用
3)等待连接并且设置同一时间能够接收的请求数量
server.listen(420)
4)让服务器保持一致的运行状态
5)接收请求
6)接收客户端发送的数据
recv(数据大小)—接收数据并且设置一次性能够接收最大数据
7)给客户端发送数据
send(数据)——发送数据,数据的类型必须是bytes
8)关闭连接
server = socket()
server.bind(('10.7.181.84', 8888))
server.listen(420)
while True:
print('开始接听')
# 当执行到accept()的时候回停下来,直到有客户端给当前服务器发送请求为止
connect, address = server.accept()
print('接收到请求')
# print(connect, address)
while True:
recv_data = connect.recv(1024)
print('接收', recv_data.decode(encoding='utf-8')) # 补充:二进制转字符串 —— 二进制对象.decode()
# print('接收', str(recv_data, encoding='utf-8')) # 补充:二进制转字符串 —— str(二进制对象)
send_message = 'HTTP/1.1 200 OK\r\n\r\n' + input('服务器:')
connect.send(send_message.encode())
connect.close()
from socket import *
2、客户端套接字
1)创建套接字对象
2)发送请求
client.connect((ip地址,端口号))
3)发送消息
4)接收消息
while True:
client = socket()
client.connect(('10.7.181.84', 8888))
send_message = input('客户端:')
client.send(send_message.encode())
re_data = client.recv(1024)
print(re_data.decode(encoding='utf-8'))
client.close()
from socket import *
server = socket()
server.bind(('10.7.181.84', 12345))
server.listen(420)
while True:
print('开始接听:')
connect, address = server.accept()
while True:
with open('aaa.jpg', 'rb') as f:
connect.send(f.read())
connect.close()
from socket import *
client = socket()
client.connect(('10.7.181.84', 12345))
while True:
re_data = client.recv(1024)
with open('bbb.jpg', 'ab') as f:
f.write(re_data)
if(len(re_data)) < 1024:
break