TCP编程

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编程)