使用python发送文本与上传到服务器图片

· Special

符合C/S架构,并用socket模块

发送信息

server端

import socket


#设置服务端对象并绑定端口
server1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server1.bind(('127.0.0.1', 8080))
server1.listen(5)


while True:
    conn,adr = server1.accept()
    print(f'链接成功,地址为{adr}')

    conn.sendall('欢迎使用客服系统'.encode())
    while True:
        data = conn.recv(1024)
        if not data:
            break
        conn.sendall('你说什么没听清'.encode())
        result = conn.recv(1024)
        print(f'回复内容为{result.decode()}')
    print('断开链接')

    conn.close()

server1.close()




client

import socket

#对象化并链接服务端
client1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client1.connect(('127.0.0.1', 8080))

#接收欢迎
content = client1.recv(1024)
print(content.decode())

while True:
    #发送问题
    user_input = input('请输入咨询内容')
    if user_input.upper() == 'Q':
        break
    client1.send(user_input.encode())
    #接受回答
    rely = client1.recv(1024)
    print(rely.decode())

client1.close()
c链接大循环s s发送c接收欢迎标语
c接收反馈问题并发送到s的小循环接收中
s循环中发送解决方法到c的循环收到中
c在一次Q中止循环,会执行循环外的c close并发送空值到s的接收并中止循环

发送文件

socket

server

import socket
from datetime import datetime
#接收图片

#对象化
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 9999))
server.listen(5)


# 接收对象
conn, addr = server.accept()

#接收照片
while True:
    ##发送标语
    conn.sendall('欢迎使用照片发送'.encode())
    #接收文件大小
    pic_size = int(conn.recv(1024).decode())

    #打开照片对象
    time_str = datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
    pic = open(time_str + '.jpg', 'wb')

    #开始接收图片
    # 已存数据
    has_save_data = 0
    while True:
        chunk = conn.recv(10240)
        pic.write(chunk)
        pic.flush()
        has_save_data += len(chunk)
        if has_save_data >= pic_size:
            break


client

import socket
import os
#发送图片

#对象实例化
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 配对
client.connect(('127.0.0.1', 9999))

#发送图片
while True:

    # 接收标语
    data_title = client.recv(1024)
    #展示标语
    print(data_title.decode())


    user_input = input('请输入照片的路径: ').strip()
    if user_input.upper() == 'Q':
        break

    #打开图片
    pic = open(user_input, 'rb')
    #发送照片大小
    pic_size = os.stat(pic.name).st_size
    client.sendall(str(int(pic_size)).encode())

    has_save_data = 0
    #开始发送图片
    while True:
        data = pic.read(10240)
        client.sendall(data)
        has_save_data += len(data)
        if has_save_data == pic_size:
            break


python


评论

行为验证™ 安全组件加载中...