TCP与TCP聊天器

2020-04-28  本文已影响0人  木叶苍蓝
TCP简介

TCP协议:传输控制协议( Transmission Control Protocol)是一种面向连接的,可靠地,基于字节流的传输层通信协议。
TCP通信需要经过创建连接,数据传输,终止连接三个步骤。
TCP通信模型中,在通信开始之前,一定要先建立相关连接,才能发送数据。类似于生活中的打电话。

TCP特点
1、面向连接

通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。
双方之间的数据传输都可以在这一个连接上进行。
完成数据交换后,双方必须断开此连接,以释放系统资源。
这种连接时一对一的,因此TCP不适用于广播的应用程序,基于广播的应用程序请使用UDP。

2、可靠传输
TCP与UDP的不同点
TCP通信模型

TCP通信模型中,在通信开始之前,一定要先建立相关连接,才能发送数据,类似于打电话。


TCP.png udp.png
TCP客户端
import socket

def main():
    # 1. 创建tcp套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCKET_STREAM)
    # 2. 连接服务器
    # tcp_socket,connect("127.0.0.1", 7890)
    server_ip = input("请输入要连接的服务器ip: ")
    server_port = int(input("请输入要连接的服务器的port: "))
    server_addr = (server_ip, server_port)
    tcp_socket.connect(server_addr) 
    # 3. 发送数据/接收数据
    send_data = input("请输入要发送的数据: ")
    tcp_socket.send(send_data.encode("utf-8"))
    # 4. 关闭套接字
    tcp_socket.close()

if __name__ == "__main__":
    main()
TCP服务器
import socket

def main():
    # 1. 创建套接字
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 2. 绑定端口
    tco_server_socket.bind("127.0.0.1", 7890)
    # 3. 监听端口
    tcp_server_socket.listen(128)
    
    while True:
        # 4. 等待客户端连接
        new_client_socket, client_addr = tcp_server_socket.accept()
        print “一个新客户端到来: %s”%(str(client_addr),)
        while True:
            # 接收客户端发送的数据
            recv_data = new_client_socket,recv(1024)
            if recv_data:
                # 返回数据给客户端
                new_client_socket.send("hello world~~~".encode("utf-8"))
            else:
                break
        # 关闭客户端套接字
        new_client_socket.close()
    # 关闭服务器套接字
    tcp_server_socket.close()


if __name__ == "__main__":
    main()
上一篇下一篇

猜你喜欢

热点阅读