TCP客户端

TCP

特点:

  1. 面向连接

通信双方必须先建立连接才能进行数据的传输
这种连接是一对一的,因此TCP不适用与广播的应用程序,基于广播的应用程序使用UDP协议。

  1. 可靠传输

1)TCP采用“发送—应答”机制

TCP发送的每个数据都必须得到接收方的应答才认为这个TCP数据传输成功
2) 超时重传

发送端发出一个数据之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个数据。
3)错误校验

TCP用校验和函数来检验数据是否有错误;在发送和接收时都要计算校验。
4) 流量监控和阻塞管理

流量控制用来避免主机发送的过快而使接收方来不及完全收下。

TCP与UDP的不同点

面向连接(确认有创建三方交握,连接已创建才做传输。)
有序数据传输
重发丢失的数据包
舍弃重复的数据包
无差错的数据传输
阻塞/流量控制

TCP客户端

需要服务的一方

import socket

# 1. 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. 绑定本地信息
tcp_socket.bind((' ', 12000))

# 3. 设置为被动的
tcp_socket.listen(60)

# 4. 等待客户端链接
new_s, client_info = tcp_socket.accept()

# 5. 用新的套接字为已经链接好的客户端服务器
recv_contend = new_s.recv(1024)
print('发送人地址:%s' % str(client_info))
print('发送的信息:%s' % recv_contend.decode('gbk'))

# 6. 关闭套接字
new_s.close()
tcp_socket.close()
模拟在线客户
import socket
# 1.创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2.绑定本地信息
tcp_socket.bind(('192.168.37.40', 12000))

# 3.设置为被动监听
tcp_socket.listen(60)

while True:
    print('等待新用户得到来了')
    # 4.等待客户端链接
    new_tcp_socket, addr = tcp_socket.accept()

    print('一个新的顾客链接成功,ta是: %s' % str(addr))

    # 5.用新的套接字为已经连接好的客户端服务器
    while True:
        recv_contend = new_tcp_socket.recv(1024)
        print('发来信息的地址:%s' % str(addr))
        print('发来信息的内容:%s' % recv_contend.decode('gbk'))

        if not recv_contend:
            # 当客户端调用close后, recv返回值为空, 此时服务套接字就可以close了
            # 6.关闭服务套接字
            new_tcp_socket.close()
            break

# 7. 关闭监听套接字
tcp_socket.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值