美文网首页
day18-homework

day18-homework

作者: rzlong | 来源:发表于2018-09-12 20:05 被阅读0次
  1. 客户端和服务器聊天,可以一直聊天,直到一方发送’拜拜’。然后就可以和下一个人一直聊
服务器:
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()
  1. 下载网络图片(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)

相关文章

  • day18-homework

    1. 写一个正则表达式判断一个字符串是否是ip地址 规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数...

  • day18-homework

    客户端和服务器聊天,可以一直聊天,直到一方发送’拜拜’。然后就可以和下一个人一直聊 下载网络图片(https://...

  • 2018-11-28 Day18-homework

    作业: 客户端和服务器聊天,可以一直聊天,直到一方发送’拜拜’。然后就可以和下一个人一直聊 (服务器) (客户端)...

网友评论

      本文标题:day18-homework

      本文链接:https://www.haomeiwen.com/subject/ttpbgftx.html