TCP编程

2018-08-15  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读