zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    Tips(持续跟新)
    icpc 2018 徐州 网络赛 B 博弈+记忆化搜索
    2018 徐州 icpc 网络赛 A 递推or数学公式
    2018 徐州icpc网络赛 G 分块
    HDU 3092 Least common multiple(完全背包+思维)
    hdu 4747(DP?线性递推)
    Pell-方程学习小结
    C++中map的介绍用法以及Gym题目:Two Sequences
    求最长上升子序列和最长非下降子序列
    dfs+枚举,flip游戏的拓展POJ2965
  • 原文地址:https://www.cnblogs.com/skaarl/p/9335363.html
Copyright © 2011-2022 走看看