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)
  • 相关阅读:
    Flink实时数仓(数据可视化)
    Hive调优
    面试(涉及技术一)
    启动Flink的yarnsession模式出错
    面试(涉及技术二)
    Filnk实时数仓(DWS层)
    Filnk实时数仓(Clickhouse)
    Filnk实时数仓(Prometheus监控)
    Filnk实时数仓(DWM层)
    Centos7下杀毒软件clamav的安装和使用
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348551.html
Copyright © 2011-2022 走看看