zoukankan      html  css  js  c++  java
  • TCP流量控制

    
    node1:/root/test#cat t2.py 
    # coding = utf-8
    # -*- coding:utf-8 -*-
    import socket
    ip_port = ('192.168.137.2',8080)
    BUFSIZE = 10
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建套接字
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    #s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 0)
    s.bind(ip_port)#绑定地址
    s.listen(5)#监听链接
    print('server listening8080...')
    while True: #无限等待连接
        conn,addr = s.accept() #接受客户端连接
        print(conn)
        print(addr)
        print('接到来自%s的链接'%addr[0])
        while True: #通信循环,无限接受客户端信息
            #print conn.getpeername()
            try:
             peeraddr=conn.getpeername()
             msg = conn.recv(BUFSIZE) #接受消息的内容
            except:
              break;
            if len(msg)==0:break  #如果 不加,已连接的客户端突然断开,recv不再阻塞,发生死循环
            print '-----------------------'
            print msg
            print '-----------------------'
            try:
             conn.send('response:'+msg)
            except:
              print '555555555'
            #conn.send(msg.upper())#服务端发送消息
        conn.close()#关闭链接
    s.close()#关闭套接字
    
    msg = conn.recv(BUFSIZE) #接受消息的内容
    
    socket.recv(bufsize[, flags])
    Receive data from the socket. The return value is a string representing the data received. The maximum amount of data to be received at once is specified by bufsize. See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero.
    
    
    从套接地接收数据,返回值是表述接收的数据 一次接收的最大数据由bufsize决定
    
    T C P还能提供流量控制。 T C P连接的每一方都有固定大小的缓冲空间。 T C P的接收端只
    允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲
    区溢出
    
    服务端流量控制:
    
    node1:/root/test#python t2.py 
    server listening8080...
    <socket._socketobject object at 0x7f4b0f4eaa60>
    ('192.168.137.1', 56941)
    接到来自192.168.137.1的链接
    -----------------------
    qazwsxedcr
    -----------------------
    -----------------------
    fvtgbyhnuj
    -----------------------
    -----------------------
    mikolp
    -----------------------
    
    
    
    客户端发送的数据;
    
    
    
    import socket
    import time
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.connect(("192.168.137.2",8080))
    s.send('qazwsxedcrfvtgbyhnujmikolp')
    s.close()
    # s.shutdown(1)
    # #time.sleep(10)
    # #print s.recv(90)
    # time.sleep(3000)
    
    客户端限流:
    import socket
    import time
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.connect(("192.168.137.2",8080))
    s.send('qazwsxedcrfvtgbyhnujmikolp')
    
    # s.shutdown(1)
    # #time.sleep(10)
    print s.recv(10)
    # time.sleep(3000)
  • 相关阅读:
    在ensp上配置Trunk接口
    在ensp上VLAN基础配置以及Access接口
    在ensp上的ARP及Proxy ARP
    在ensp上简单的配置交换机
    1000000 / 60S 的 RocketMQ 不停机,扩容,平滑升级!
    DE1-SOC 只要加载驱动VNC就断开(DE1-SOC 只要加载驱动串口就卡住)
    通过U盘拷贝文件到DE1-SOC 的 Linux系统
    Linux 系统响应来自 FPGA 端的中断的中断号到底怎么对应?(GIC控制器)
    HPS 访问 FPGA 方法之五—— 通过FPGA 中断访问
    HPS 访问 FPGA 方法之四—— 编写 Linux 字符设备驱动
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348551.html
Copyright © 2011-2022 走看看