|
|
|
@ -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}
|