diff --git a/code/reference/ch_wireshark/TCPFlowControlDemo/Server.py b/code/reference/ch_wireshark/TCPFlowControlDemo/Server.py new file mode 100644 index 0000000..fa8b96f --- /dev/null +++ b/code/reference/ch_wireshark/TCPFlowControlDemo/Server.py @@ -0,0 +1,32 @@ +import socket +import time + +def recv_data(sock,length): + data=b'' + while len(data) < length: + more = sock.recv(length - len(data)) + if not more: + pass + #raise EOFError('Cannot RECV execpting data') + data += more + return data + + +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +# 设置接收缓冲区大小为1024 +s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024) + +s.bind(('0.0.0.0', 9999)) +s.listen(1) +print("Sever listening on 9999...") +try: + sc, addr = s.accept() + while True: + rcvdata = recv_data(sc,16) + time.sleep(0.01) + pass + +finally: + sc.close() + s.close() diff --git a/code/reference/ch_wireshark/TCPFlowControlDemo/client.py b/code/reference/ch_wireshark/TCPFlowControlDemo/client.py new file mode 100644 index 0000000..de8f653 --- /dev/null +++ b/code/reference/ch_wireshark/TCPFlowControlDemo/client.py @@ -0,0 +1,24 @@ +import socket +import time + +ip_port = ("server", 9999) +data = "0123456789\n"*100 + +c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +try: + c.connect(ip_port) + print("Connected.") + time.sleep(1) + i=0 + while i<10: + print("Send:"+data) + c.send(data.encode()) + i=i+1 + +finally: + print("Sent. Waiting....") + +while True: + time.sleep(0.001) + diff --git a/figure/chapters/wireshark/TCP-structure.png b/figure/chapters/wireshark/TCP-structure.png index cf32bf4..0bf5716 100644 Binary files a/figure/chapters/wireshark/TCP-structure.png and b/figure/chapters/wireshark/TCP-structure.png differ