diff --git a/data/chapter1/preface.tex b/data/chapter1/preface.tex index 79ce111..6f84f35 100644 --- a/data/chapter1/preface.tex +++ b/data/chapter1/preface.tex @@ -7,3 +7,4 @@ 掌握以太网、802.11、ARP、IP、ICMP和TCP等重要协议传输单元结构, 深入理解相关网络命令和重要协议算法的工作原理, 从而培养网络故障检测、网络性能改进和网络安全分析的能力。 +(备注:第二版将增补实验1.4: IEEE 802.11协议分析。) \ No newline at end of file diff --git a/data/chapter1/section3.tex b/data/chapter1/section3.tex index 0fc9696..6538304 100644 --- a/data/chapter1/section3.tex +++ b/data/chapter1/section3.tex @@ -467,3 +467,59 @@ CUBIC的关键特征是:cwnd窗口的增长依赖两次丢包的时间。 \item (10分)完成任2道思考题。 \item (10分)记录自己在本次实验中所遇到的问题,以及心得感悟实验总结。 \end{enumerate} + +\subsection{附录} +\label{subsec:c1_s3_additionalprg} +1. Python3 TCP socket通信程序。 +\ 服务端 server.py +\lstset{language=python3} +\begin{lstlisting} + 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 + 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() +\end{lstlisting} +\\ +\ 客户端 +\lstset{language=python3} +\begin{lstlisting} + import socket + import time + ip_port = ("192.168.100.144", 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) +\end{lstlisting} \ No newline at end of file