python中的TCP(传输控制协议)

1.TCP与UDP的不同:

windows网络调试助手下载:https://pan.baidu.com/s/1IwBWeAzGUO1A3sCWl20ssQ
提取码:68gr

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

2.客户端:

import socket

def main():
    # 创建套接字
    tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    # 连接服务器
    #tcp_socket.connect(("172.17.3.97",8080))
    server_ip = input("请输入要链接的服务器ip:")
    server_port = int(input("请输入要链接的服务器port:"))
    server_addr = (server_ip,server_port)
    tcp_socket.connect(server_addr)

    # 发送数据/接收数据
    send_data = input("请输入要发送的数据:")
    tcp_socket.send(send_data.encode("gbk"))

    #关闭套接字
    tcp_socket.close()

if __name__ == "__main__":
    main()

3.服务端:可以开启多个网络调试助手(客户端)测试

循环为多个客户端服务,并且循环为同一个客户端服务

import socket

def main():
    # 创建套接字
    tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 绑定本地信息
tcp_server_socket.bind("",7890)

# 让默认套接字由主动变为被动listen
tcp_server_socket.listen(128)

while True:
    print("等待一个新的客户端......")
    # 等待客户端的连接 accept
    new_client_socket ,client_addr = tcp_server_socket.accept()
    print("一个新的客户端已到来%s" %str(client_addr))

    while True:
        # 接受客户端发过来的请求
        recv_data = new_client_socket.recv(1024)
        print("客户端发来的请求是%s" %recv_data.decode("gbk"))
        # 如果recv解堵塞,那么有两种方式:
        # 1.客户端发来数据
        # 2.客户端调用close
        if recv_data:
            # 回送一部分数据给客户端
            new_client_socket.send("hahaha".encode("gbk"))
        else:
            break
    # 关闭套接字
    new_client_socket.close()
    print("服务完毕,谢谢光临!")
    
# 如果将监听套接字关闭,会导致不能再次等待新的客户端到来
tcp_server_socket.close()


if __name__ == "__main__":
    main()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值