TCP编程

作者: 言烬 | 来源:发表于2018-08-15 20:40 被阅读0次

    TCP:传输控制协议(Transmission Control Protocol)
    是一种面向连接,可靠的,基于字节流的传输层通信协议
    在七层模型中,他属于传输层,建立主机到端口之间的连接

    数据传输需要进行“三次握手,四次挥手”的行为:
    三次握手:
    客户端向服务端发送一个寻址请求码seq = 100,服务端向客户端返回一个应答ack=101
    客户端向服务端发送一个确认请求码seq = 101,服务端向客户端返回一个应答ack=201
    客户端向服务端发送一个连接请求码seq = 201,服务端向客户端返回一个应答ack=301
    客户端可以与服务端之间开始进行数据交互
    四次挥手:
    客户端向服务端发送一个数据验证请求码seq = 100,服务端向客户端返回一个应答ack=101
    客户端向服务端发送一个传输结束标记seq = 101,服务端向客户端返回一个应答ack=201
    客户端向服务端发送一个确认结束标记seq = 201,服务端向客户端返回一个应答ack=301
    客户端向服务端发送一个断开连接标记seq = 301,服务端向客户端返回断开连接应答ack=401

    服务端开发

    '''TCP服务端模块'''
    #  引入需要的模块
    import socket
    
    # 定义连接信息
    HOST = ''
    PORT = 8080
    ADDRESS = (HOST, PORT)
    
    # 定义一个读写数据的缓冲字节大小
    BUFFER = 1024
    
    # 创建一个TCP服务端套接字对象
    #tcp_server = socket.socket()
    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 绑定主机端口号
    tcp_server.bind(ADDRESS)
    
    # 监听端口:参数~排队的客户端
    tcp_server.listen(5)
    
    while True:
        # 等待客户端的接入,建立连接
        print("waiting for connect...")
        server_socket, addr = tcp_server.accept()
        print("client already connect! welcome to server: ", addr)
    
        while True:
            # 发送一个欢迎消息给客户端
            info = input("请输入您要发送的消息:")
            server_socket.send(info.encode("utf-8"))
    
            # 接受客户端发送的消息
            msg = server_socket.recv(BUFFER)
            print("client:", msg.decode("utf-8"))
            if msg == b'BYE':
                # 关闭套接字,释放资源
                server_socket.close()
                break
    

    客户端开发:

    '''TCP客户端'''
    # 引入需要的模块
    import socket
    
    # 定义连接信息
    TARGET_HOST = '192.168.209.1'
    TARGET_PORT = 8080
    TARGET_ADDRESS = (TARGET_HOST, TARGET_PORT)
    BUFFER = 1024
    
    # 创建一个TCP套接字对象
    tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 连接指定的主机
    tcp_client.connect(TARGET_ADDRESS)
    
    # 收发消息
    while True:
        # 接受服务器消息
        msg = tcp_client.recv(BUFFER)
        print("server:", msg.decode("utf-8"))
    
        # 向服务器发送消息
        info = input("请输入您要发送的消息:")
        tcp_client.send(info.encode("utf-8"))
        if info == "BYE":
            # 关闭套接字
            tcp_client.close()
            break
    print("客户端退出")
    

    相关文章

      网友评论

        本文标题:TCP编程

        本文链接:https://www.haomeiwen.com/subject/uihgbftx.html