设为首页 加入收藏

TOP

Day9 网络编程(五)
2017-09-30 17:33:11 】 浏览:10987
Tags:Day9 网络编程
sp; server.serve_forever()

#####################################client


import socket
ip_port=("127.0.0.1",9998)

sk=socket.socket()
sk.connect(ip_port)
print("客户端启动...")

print(str(sk.recv(1024),"utf8"))

while True:
    inp=input("please input:").strip()


    sk.sendall(bytes(inp,"utf8"))
    basic_info_bytes=sk.recv(1024)
    print(str(basic_info_bytes,"utf8"))
    # sk.send(bytes('ok','utf8'))
    result_length=int(str(basic_info_bytes,"utf8").split("|")[1])

    print(result_length)
    has_received=0
    content_bytes=bytes()
    while has_received<result_length:
        fetch_bytes=sk.recv(1024)
        has_received+=len(fetch_bytes)
        content_bytes+=fetch_bytes
    cmd_result=str(content_bytes,"utf8")
    print(cmd_result)

sk.close()

实现简单FTP功能

ftp_server.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:WangHuafeng


import socketserver
import subprocess
import json

class MyServer(socketserver.BaseRequestHandler):
def handle(self):
self.request.sendall(bytes("欢迎使用Python Server!", encoding='utf-8'))
while True:
data = self.request.recv(1024)
if len(data) == 0:break
print('data', data)
print("[%s] says:%s" % (self.client_address, data.decode()))
task_data = json.loads(data.decode())
task_action = task_data.get('action')
if hasattr(self, 'task_%s' % task_action):
func = getattr(self, 'task_%s' % task_action)
func(task_data)
else:
print('task action is not supported', task_action)

def task_put(self, *args, *kwargs):
print("---put", args, kwargs)
filesize = args[0].get('file_size')
filename = args[0].get('filename')
server_response = {'status':200}
self.request.send(bytes(json.dumps(server_response), encoding='utf-8'))
recv_size = 0
with open(filename, 'wb') as f:
while recv_size < filesize:
data = self.request.recv(4096)
f.write(data)
recv_size += len(data)
print("file recv sucess")

if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('192.168.6.130', 8999), MyServer)
server.serve_forever()
ftp_client.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: wanghuafeng


import socket
import os, json
ip_port = ('192.168.6.130', 8999)
sk = socket.socket()
sk.connect(ip_port)
welcome_msg = sk.recv(1024)

while True:
    send_data = input(">>>: ").strip()
    if len(send_data) == 0:continue
    cmd_list = send_data.split()
    if len(cmd_list) < 2:continue   #ftp命令put /usr/bin/file.txt
    task_type = cmd_list[0]
    if task_type == 'put':
        abs_filepath = cmd_list[1]
        if os.path.isfile(abs_filepath):
            #MD5,留着
       

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python面试题 —— 计算列表中出.. 下一篇利用Python进行数据分析(6) NumPy..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目