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)
原文地址:https://www.cnblogs.com/hzcya1995/p/13348551.html