TCP编程

作者: 周周周__ | 来源:发表于2018-08-15 21:27 被阅读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("客户端退出")

    参考链接:https://www.jianshu.com/p/cb0539a6ad6b

    相关文章

      网友评论

          本文标题:TCP编程

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