就业DAY2_网络编程_文件下载客户端及服务器

import socketdef main():
    # 创建套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 获取服务器的ip port
    dest_addr = input("请输入服务器的ip:")
    dest_port = int(input("请输入服务器的port:"))

    # 链接服务器
    tcp_socket.connect((dest_addr, dest_port))

    # 获取下载的文件名字
    file = input("请输入需要下载的文件名:")

    # 将文件名字发送到服务器
    tcp_socket.send(file.encode("gbk"))

    # 接收文件中的数据
    recv_data = tcp_socket.recv(1024)

    # 保存接收到的数据到一个文件中
    if recv_data:
        with open("复件" + file, "wb") as f:
            f.write(recv_data)
    # 关闭套接字
    tcp_socket.close()

if __name__ == "__main__":
    main()
import socket

def send_file_2_client(client_socket, client_addr):
    # 1 接收需要下载的文件名
    # 接收客户端发送来的请求,接收客户端发过来的文件名
    file_name = client_socket.recv(1024)
    print("客户端%s发过来的文件名:%s" % (str(client_addr), file_name.decode("gbk")))

    file_content = None
    # 2 打开文件,读取数据
    try:
        f = open(file_name.decode("gbk"), "rb")
        file_content = f.read()
        f.close()
    except Exception as ret:
        print("没有要下载的文件%s" % ret)

    # 3 发送文件的数据给客户端
    if  file_content:
    # 回送一部分数据给客户端
        client_socket.send(file_content)

def main():
    # 买个手机-创建tcp套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 插入手机卡-绑定
    tcp_socket.bind(("", 7890))

    # 将手机设置为正常的响铃模式(让默认的套接字由主动变为被动listen)
    tcp_socket.listen(128)

    while True:
        # 等待别人的电话到来(等待客户端的链接 accept)
        client_socket, client_addr = tcp_socket.accept()

        # print(client_socket)
        print(client_addr)

        send_file_2_client(client_socket, client_addr)

        # 关闭套接字

        client_socket.close()
    tcp_socket.close()

if __name__ == "__main__":
    main()

原文地址:https://www.cnblogs.com/joycezhou/p/11440429.html

时间: 2024-10-13 14:23:10

就业DAY2_网络编程_文件下载客户端及服务器的相关文章

【python】网络编程-SocketServer 实现客户端与服务器间非阻塞通信

利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信.首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩:这个类只用于派生,所以不会生成这个类的实例:可以考虑使用TCPServer和UDPServer.TCPServer/UDPServer:基本的网络同步TCP/UDP服务器.UnixStreamServer/ UnixDatagramServer:基本的基于文件同步TCP/UDP服务器.Fork

就业DAY2_网络编程_tcp客户端及服务器

from socket import * import socket def main(): # 创建tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 链接服务器 # tcp_socket.connect(("10.6.25.79", 8080)) server_ip = input("请输入需要链接服务器的IP:") server_port = int(input(&qu

java_socket套接字网络编程_实现多线程聊天

java编程_socket_套接字_网络编程_简易的GUI多线程聊天程序 运行效果: =============================================================== 服务器端代码: 1 package com.b510.socket1706.gui.freeechatroom; 2 3 import java.io.*; 4 import java.net.*; 5 import java.awt.*; 6 import java.awt.even

Android网络编程之传递数据给服务器(一)

Android网络编程之传递数据给服务器(一) 请尊重他人的劳动成果,转载请注明出处:Android网络编程之传递数据给服务器(一) 因为Android程序需要和服务器进行通信,所以需要服务器端提供的支持. 一.通过GET方式传递数据给服务器 通过GET方式上传数据主要适用于数据大小不超过2KB,且对安全性要求不高的情况下. 1.创建服务器端: 服务器端项目结构: 第一步:创建控制器Servlet package com.jph.sgm.servlet; import java.io.IOExc

Linux网络编程(简单的时间获取服务器)

1.一个简单的服务器时间获取程序 服务器和客户端采用UDP通信的方式,来编写一个简单的时间获取应用. 把过程大致理顺一下,首先是服务器端的编写,使用的是迭代的方式,没有并发 先创建一个socket而后bind服务器,绑定之后就可以创建一个循环来接收和发送 信息了,以达到和客户端之间的通信. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include

Android网络编程之传递数据给服务器(二)

Android网络编程之传递数据给服务器(二) 请尊重他人的劳动成果,转载请注明出处:Android网络编程之传递数据给服务器(二) 我曾在<Android网络编程之传递数据给服务器(一)> 一文中介绍了如何通过GET方式传递数据给服务器,通过GET方式传递数据主要适用于数据大小不超过2KB,且对安全性要求不高的情况下.下面就介绍通过POST方式传递数据主到服务器. 一.通过Post方式传递数据给服务器 通过Post方式传递数据给服务器是Android应用程序开发提交数据给服务器的一种主要的方

《UNIX网络编程》入门客户端服务器例子

最近在看<UNIX网络编程>(简称unp)和<Linux程序设计>,对于unp中第一个获取服务器时间的例子,实践起来总是有点头痛的,因为作者将声明全部包含在了unp.h里,导致后面编写代码会对这个头文件造成依赖,而学习不到调用了相应功能之后,应该包含哪些确切的头文件. 再者,我下载了unp.h之后,头文件包含再次产生了其他的依赖缺失,因此便参考了<Linux程序设计>中socket一章的入门例子的头文件包含,并且编译中仍然找不到的包含或者是宏定义在unp.h中搜索并粘贴

Java网络编程——服务器端和客户端互发信息

引言 ? ? 为了学习Java网络编程,用一个QQ(屌丝版)作为例子练手,记录屌丝版QQ的开发过程,这里我们认为已经掌握其中的网络基础部分,即HTTP协议,TCP/IP协议等,在此基础上我们开始我们的Java网络部分的学习,我们要知道服务器和客户端是如何通信的,首先我们要了解Java网络知识中的一个很重要的东西--Socket ? ? Socket初探 ? ? ServerSocket和Socket ? ? 首先服务器端需要用到java.net包下的ServerSocket类,该类的一个实例用于

Unix网络编程_卷1卷2

1. UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API PDFhttp://www.linuxidc.com/Linux/2014-04/100155.htm UNIX网络编程卷1:套接字联网API(第3版) 中文高清带完整书签 PDFhttp://www.linuxidc.com/Linux/2014-04/100222.htm UNIX网络编程.卷2:进程间通信(第2版)http://www.linuxidc.com/Linux/2013-01/77936.ht