没有什么事情可以做,无聊的很 写个最简单的ftp吧---说白了就是一个简单的文件上传。QAQ

思路:client --读取文件的一行 然后发到server端 然后server 读取 写入文件的一行

先写客户端

#_*_coding:utf-8_*_
import socket,sys,os

def upload_file(filename):
    cli  = socket.socket()
    ip_port = ('localhost',8080)
    cli.connect(ip_port)
    cli.send(filename)
    with open(filename,'rb') as fe:
        for i in fe.readlines():
            cli  = socket.socket()
            ip_port = ('localhost',8080)
            cli.connect(ip_port)
            cli.send(i)

def client(argv):
    if len(argv)!=2:
        sys.exit("2 argument expected but %s given" %len(argv))
    msg = check_argv=(argv[1])
    if msg:
        upload_file(argv[1])

def check_argv(filename):
    if(os.path.isfile(filename)):
        msg = "no file or directory --->%s"% filename
        return msg
    else:
        return None

if __name__ == "__main__":
    print sys.argv[1]
    client(sys.argv)

 然后是 server端

#_*_coding:utf-8_*_
import socket
def main():
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(('localhost',8080))
    s.listen(5)
    conn,address = s.accept()
    filename = conn.recv(1024)
    row_data = filename[2:]
    filename = "D:%s" % row_data
    conn.close()
    with open(filename,"w+") as fe:
        while 1:
            conn,address = s.accept()
            clidata = conn.recv(1024)
            print clidata,"------->"
            fe.write(clidata)
            fe.flush()

if __name__ == "__main__":
    main()

  因为是在本机器上面做的 请忽略ip吧

一个最简单的ftpsever的更多相关文章

  1. [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office

    打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...

  2. IoC原理-使用反射/Emit来实现一个最简单的IoC容器

    从Unity到Spring.Net,到Ninject,几年来陆陆续续用过几个IoC框架.虽然会用,但也没有一直仔细的研究过IoC实现的过程.最近花了点时间,下了Ninject的源码,研究了一番,颇有收 ...

  3. 【最简单IOC容器实现】实现一个最简单的IOC容器

    前面DebugLZQ的两篇博文: 浅谈IOC--说清楚IOC是什么 IoC Container Benchmark - Performance comparison 在浅谈IOC--说清楚IOC是什么 ...

  4. 一个js简单的日历显示效果的函数

    用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格table生成,分成两个部分. 第一个部分:就是前面的第一排,我用一行<t ...

  5. [编译] 1、第一个makefile简单例子

    前言 本篇用一个最简单的例子引入makefile,教你编写第一个makefile 正文 在Download/aa文件夹下有a.c和makefile文件 litao@litao:~/Downloads/ ...

  6. Windows下用Codeblocks建立一个最简单的DLL动态链接库

    转自:http://blog.csdn.net/wangwei_cq/article/details/8187576 来源:http://hi.baidu.com/hellosim/item/9ae4 ...

  7. 用qpython3写一个最简单的发送短信的程序

    到目前为止并没有多少手机应用是用python开发的,不过qpython可以作为一个不错的玩具推荐给大家来玩. 写一个最简单的发送短信的程序,代码如下: #-*-coding:utf8;-*- #qpy ...

  8. linux搭建一个配置简单的nginx反向代理服务器 2个tomcat

    1.我们只要实现访问nginx服务器能跳转到不同的服务器即可,我本地测试是这样的, 在nginx服务器里面搭建了2个tomcat,2个tomcat端口分别是8080和8081,当我输入我nginx服务 ...

  9. C#实现一个最简单的HTTP服务器

    简介 本文用C#实现了一个最简单的HTTP服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于HTTP协议的知识. 背景 高性能的WEB应用一般都架设在强大的WEB服务器上,例如IIS ...

随机推荐

  1. AC日记——二叉树最大宽度和高度 1501 codevs

    1501 二叉树最大宽度和高度  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 Description   给出一个二叉树,输出它的最大宽 ...

  2. GitHub 下载文件夹

    工具 TortoiseSVN 步骤 1.打开要下载的项目,选中要下载的文件夹,右键 选择 复制链接地址 2.把链接中的 tree/master 改成 trunk ,(trunk是master分支,可以 ...

  3. c# winforms TextBox的记忆功能

    c# winforms TextBox的记忆功能 1:在项目上点右键  sproperties-settings 添加项目 如 MyText  类型 String 2: 获取值:   string l ...

  4. android studio 应用小知识总结

    1.在复制一个工程文件后 想修改包名,则在Android下的java中的 Android test中,鼠标右键Refactor->rename->Rename_package->Do ...

  5. [No00000B]MS OFFICE 2013 快捷键大全

    常用快捷键 快捷键 作用 Ctrl+Shift+Spacebar 创建不间断空格 Ctrl+-(连字符) 创建不间断连字符 Ctrl+B 使字符变为粗体 Ctrl+I 使字符变为斜体 Ctrl+U 为 ...

  6. 转: 使用Eclipse的Working Set,界面清爽多了

    from: http://iyuanbo.iteye.com/blog/1158136 使用Eclipse的Working Set,界面清爽多了   想必大家的Eclipse里也会有这么多得工程... ...

  7. Mysql LIMIT如何正确对其进行优化

    Mysql LIMIT如何正确对其进行优化 2010-05-17 17:09 佚名 博客园 字号:T | T 我们今天主要和大家分享的是Mysql LIMIT简单介绍以及如何进行优化的相关内容的描述, ...

  8. 如何迁移Alwayson AG

    Windows cluster要求同一个cluster中的所有windows版本都是相同的,这样就出现一个问题,当我们要将对windows进行升级时,(例如从windows 2008 R2升级到win ...

  9. Cocos2d-x 3.4在AndroidStudio上编译配置

    转载请标明出处:http://www.cnblogs.com/studweijun/p/4320778.html 1.准备好以下文件 1) AndroidStudio:  https://dl.goo ...

  10. canvas api

    基本骨骼 <canvas id="canvas" width=1000 height=1000 style="border: 1px black dotted&qu ...