TCP的数据传输

TCP协议,传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP通信需要经过创建连接、数据传送、终止连接三个步骤。

案例:利用TCP从服务器下载文件至客户端

案例分析:

    客户端:

        1、建立套接字

        2、数据链接至服务器

        3、发送要下载文件名称至服务器

        4、接收服务器传来的数据,并保存至本地

        5、关闭套接字

    服务器:

        1、建立套接字

        2、转套接字状态由主动为被动

        3、接收监听到的请求并保存、创建新的套接字

        4、读取请求文件内容

        5、新的套接字发送文件内容至客户端

        6、关闭套接字

 

 

客户端TCP程序:

import socket

def main():

    tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    tcp_client.connect((input("请输入服务器IP:"),int(input("请输入服务器port:"))))

    data_file_name = input("请输入要下载的文件:")

    tcp_client.send(data_file_name.encode("utf-8"))

    with open("[复件]"+data_file_name,"wb") as f:

        f.write(tcp_client.recv(1024))

    tcp_client.close()

if __name__ == "__main__":

    main()

 

服务器TCP程序:

import socket

def main():

    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    tcp_server.bind(("",8080))

    tcp_server.listen(128)

    new_tcp_server, client_addr = tcp_server.accept()

    file_data = new_tcp_server.recv(1024)

    content = None

    try:

        f = open(file_data.decode("utf-8"))

        content = f.read("rb")

        f.close()

    except Exception:

        print("对不起,你请求的文件(%s)不存在" % file_data)

    if content:

        new_tcp_server.send(content.encode("utf-8"))

        print("下载成功!")

    new_tcp_server.close()

    tcp_server.close()

    if __name__ == "__main__":

        main()

posted @ 2018-07-19 13:49  skaarl  阅读(400)  评论(0编辑  收藏  举报