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)
  • 相关阅读:
    vue 中引用echarts 初始化init undefind问题(Cannot read property ‘init‘ of undefined)
    粘性定位(position:sticky)实现固定表格表头、固定列
    js替换字符串中的空格,换行符 或 替换成<br>
    一个完整的大作业
    数据结构化与保存
    爬取所有校园新闻
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
    字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348551.html
Copyright © 2011-2022 走看看