tcp网络编程基础

小鱼儿 2022-04-18 05:26 384阅读 0赞

tcp网络编程基础


1.tcp客户端

  1. from socket import *
  2. # 创建socket
  3. tcp_client_socket = socket(AF_INET, SOCK_STREAM)
  4. # 目的信息
  5. server_ip = input("请输入服务器ip:")
  6. server_port = int(input("请输入服务器port:"))
  7. # 链接服务器
  8. tcp_client_socket.connect((server_ip, server_port))
  9. # 提示用户输入数据
  10. send_data = input("请输入要发送的数据:")
  11. tcp_client_socket.send(send_data.encode("gbk"))
  12. # 接收对方发送过来的数据,最大接收1024个字节
  13. recvData = tcp_client_socket.recv(1024)
  14. print('接收到的数据为:', recvData.decode('gbk'))
  15. # 关闭套接字
  16. tcp_client_socket.close()

2.tcp服务器

流程如下:
1.socket创建一个套接字
2.bind绑定ip和port
3.listen使套接字变为可以被动链接
4.accept等待客户端的链接
5.recv/send接收发送数据

代码如下:
from socket import *

  1. # 创建socket
  2. tcp_server_socket = socket(AF_INET, SOCK_STREAM)
  3. # 本地信息(不写ip默认本机127.0.0.1)
  4. address = ('127.0.0.1', 7788)
  5. # 绑定
  6. tcp_server_socket.bind(address)
  7. # 使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了
  8. #监听
  9. tcp_server_socket.listen(128)
  10. # 如果有新的客户端来链接服务器,那么就产生一个新的套接字专门为这个客户端服务
  11. # client_socket用来为这个客户端服务
  12. # tcp_server_socket就可以省下来专门等待其他新客户端的链接
  13. client_socket, clientAddr = tcp_server_socket.accept()
  14. # 接收对方发送过来的数据
  15. recv_data = client_socket.recv(1024) # 接收1024个字节
  16. print('接收到的数据为:', recv_data.decode('gbk'))
  17. # 发送一些数据到客户端
  18. client_socket.send("thank you !".encode('gbk'))
  19. # 关闭为这个客户端服务的套接字,只要关闭了,就意味着为不能再为这个客户端服务了,如果还需要服务,只能再次重新连接
  20. client_socket.close()

3.tcp的3次握手

在这里插入图片描述

  1. client(客户端连接connect)-------->server(服务端监听listen)--------->client(服务端告诉客户端链接已建立)---------->server(客户端告诉服务端链接已建立)

4.tcp的4次挥手

  1. client(客户端告诉服务端要关闭链接close)
  2. ---->server(服务端告诉客户端同意关闭链接close)
  3. ---->client(服务端告诉客户端链接已关闭)
  4. server---->client(服务端将最后的数据传递给客户端)
  5. ---->server(设置超时等待,确保最后达到关闭状态)

5.tcp长连接和短连接

  1. TCP短连接

    client 向 server 发起连接请求
    server 接到请求,双方建立连接
    client 向 server 发送消息
    server 回应 client
    一次读写完成,此时双方任何一个都可以发起 close 操作
    在步骤5中,一般都是 client 先发起 close 操作。当然也不排除有特殊的情况。

    短连接一般只会在 client/server 间传递一次读写操作!

  2. TCP长连接

    client 向 server 发起连接
    server 接到请求,双方建立连接
    client 向 server 发送消息
    server 回应 client
    一次读写完成,连接不关闭
    后续读写操作…
    长时间操作之后client发起关闭请求

发表评论

表情:
评论列表 (有 0 条评论,384人围观)

还没有评论,来说两句吧...

相关阅读

    相关 网络编程--TCP

    TCP--传输控制协议 udp通信模型在通信的开始之前不需要建立相关的连接,只需要发送数据即可,类似于日常生活中的写信。 tcp协议是一种面向连接的、可靠的、基于字节流

    相关 TCP网络编程

    TCP网络编程 TCP协议 TCP协议,传输控制协议(Transmission Control Protocol,缩写为TCP) 是一种面向连接的、可靠的、安全的