day18----总结 网络编程

day18-- 总结 网络编程

套接字

  • 1.什么是socket编程
socket又叫套接字,指的是实现通信的两个端;
这两个端又分为服务器套接字和客户端套接字
(通信是双向的,连接是单向的)

服务器

  • 2.服务器套接字

python中提供了一个socket模块来支持socket编程

1)创建套接字对象(买电话机)

server = socket.socket()

2)绑定ip和端口

bind((ip地址, 端口号))
ip地址  -  字符串;服务器运行在那台计算机及上,ip地址就写那台计算机的ip
端口号  -  整型;范围:0-65535,其中0-1024是著名端口,有特殊意义,一般不用
server.bind(('10.7.181.97', 8888))

3)等待连接并且设置同一时间能够接收的请求数量

server.listen(1024)

4)让服务器保持一直运行的状态

while True:
    print('开始监听...')
    5)接收请求(接电话)
    注意:当程序执行到accept()的时候,会停下来,直到有客户端给当前服务器发送请求
    connect, address = server.accept()
    print('接收请求')
    print(connect, address)
    
    while True:
        6)接收客户端发送的数据(听别人讲电话)
        """
        recv(数据大小)  -  接收数据并且设置一次性能够接收的最大数据
        
        补充:二进制转字符串
        二进制对象.decode()
        str(二进制对象,encoding='utf-8')
        """
        recv_data = connect.recv(1024)
        print('接收:', recv_data.decode(encoding='utf-8'))
        
        7)给客户端发送数据(说话别人听)
        """
        send(数据)   -  发送数据,数据的类型必须是bytes(二进制)
        """
        send_massage = input('服务器:')
        connect.send(send_maassage.encode())

    
    8)关闭连接(挂电话)
    connect.close()
    

客户端

from socket import *

1)创建套接字对象(买电话机)
client = soocket()

2)发送请求(打电话)
# connect((ip地址, 端口号))
client.connect(('10.7.181.97', 8888))


while True:
    3)发送消息
    send_massage = input('客户端:')
    client.send(send_massage.encode())
    
    4)接收消息
    re_data = client.recv(1024)
    print(re_data.decode(encoding='utf-8'))

client.close()

图片server

from socket import *
server = socket()
server.bind(('10.7.181.97', 7777))
server.listen(1000)

# 让程序一直运行
while True:
    print('开始监听...')
    connect, address = server.accept()
    
    # 发送图片
    with open('files/222.jpg', 'rb') as f:
        connect.send(f.read())

    connect.close()
    

图片client

from socket import *
client = socket()
client.connect(('10.7.181.97', 7777))

while True:
    re_data = client.recv(1024)
    with open('files/new.jpg', 'ab') as f:
        f.write(re_data)
    
    if len(re_data) < 1024:
        break
        

你可能感兴趣的:(day18----总结 网络编程)