单元二+code

merge-requests/4/head
freedomlove 4 years ago
parent 1bb9d8771e
commit 9f071eb5a0

@ -0,0 +1,66 @@
from socket import *
from base64 import *
mailfrom = "mail from:2@test.com\r\n"
rcptto = "rcpt to:1@test.com\r\n"
data = "data\r\n"
quitmsg = "quit\r\n"
msg = "\r\n I love computer networks!"
endmsg = "\r\n.\r\n"
#此处使用易邮邮件服务器软件搭建了一个内网邮件服务器
mailserver = '10.130.82.62'
mailport = 25
connectaddress = (mailserver, mailport)
# Create socket called clientSocket and establish a TCP connection with mailserver
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect(connectaddress)
recv = clientSocket.recv(1024)
print (recv)
if recv[:3] != '220':
print ('220 reply not received from server.')
# Send HELO command and print server response.
heloCommand = 'HELO Alice\r\n'
clientSocket.send(bytes(heloCommand.encode()))
recv1 = clientSocket.recv(1024)
print (recv1.decode())
if recv1[:3] != '250':
print ('250 reply not received from server.')
#print('000000000000000')
#从命令和打印服务器响应发送邮件。
login = b'auth login\r\n'
clientSocket.send(login)
recv2 = clientSocket.recv(1024).decode('utf-8')
print ('222+',recv2)
userCommand = b64encode('2@test.com'.encode('utf-8'))
clientSocket.send((str(userCommand,encoding='utf-8')+'\r\n').encode())
recv3 = clientSocket.recv(1024).decode('utf-8')
print ('333+',recv3)
password = b64encode('2'.encode('utf-8'))
clientSocket.send((str(password,encoding='utf-8')+'\r\n').encode())
recv4 = clientSocket.recv(1024).decode('utf-8')
print ('444+',recv4)
#print('0000000000000000')
clientSocket.send(bytes(mailfrom.encode()))
check = clientSocket.recv(1024)
print(check)
clientSocket.send(bytes(rcptto.encode()))#将RCPT发送到命令和打印服务器响应。
check1 = clientSocket.recv(1024)
print(check1)
clientSocket.send(bytes(data.encode()))#发送数据命令和打印服务器响应。
check2 = clientSocket.recv(1024)
print(check2)
clientSocket.send(bytes((mailfrom+msg+endmsg).encode()))#发送消息数据。
check3 = clientSocket.recv(1024)
print(check3)
#发送退出命令并获得服务器响应。
clientSocket.send(bytes(quitmsg.encode()))
check4 = clientSocket.recv(1024)
print(check4)
clientSocket.close()

@ -0,0 +1,19 @@
from socket import *
import time
serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
clientSocket.settimeout(1)
for i in range(0, 10):
sendTime = time.time()
message = ('Ping %d %s' % (i + 1, sendTime)).encode()
try:
clientSocket.sendto(message, (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
rtt = time.time() - sendTime
print('Sequence %d: Reply from %s RTT = %.3fs' % (i + 1, serverName, rtt))
except Exception as e:
print('Sequence %d: Request timed out' % (i + 1))
clientSocket.close()

@ -0,0 +1,11 @@
import random
from socket import *
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', 12000))
while True:
rand = random.randint(0, 10)
message, address = serverSocket.recvfrom(1024)
message = message.upper()
if (rand < 4):
continue
serverSocket.sendto(message, address)

@ -0,0 +1,62 @@
# Import socket module
from socket import *
import sys # In order to terminate the program
# Create a TCP server socket
#(AF_INET is used for IPv4 protocols)
#(SOCK_STREAM is used for TCP)
serverSocket = socket(AF_INET, SOCK_STREAM)
# Assign a port number
serverPort = 80
# Bind the socket to server address and server port
serverSocket.bind(("", serverPort))
# Listen to at most 1 connection at a time
serverSocket.listen(1)
# Server should be up and running and listening to the incoming connections
while True:
print('The server is ready to receive')
# Set up a new connection from the client
connectionSocket, addr = serverSocket.accept()
# If an exception occurs during the execution of try clause
# the rest of the clause is skipped
# If the exception type matches the word after except
# the except clause is executed
try:
# Receives the request message from the client
message = connectionSocket.recv(1024).decode()
# Extract the path of the requested object from the message
# The path is the second part of HTTP header, identified by [1]
filename = message.split()[1]
# Because the extracted path of the HTTP request includes
# a character '\', we read the path from the second character
f = open(filename[1:])
# Store the entire contenet of the requested file in a temporary buffer
outputdata = f.read()
# Send the HTTP response header line to the connection socket
connectionSocket.send("HTTP/1.1 200 OK\r\n\r\n".encode())
# Send the content of the requested file to the connection socket
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i].encode())
connectionSocket.send("\r\n".encode())
# Close the client connection socket
connectionSocket.close()
except IOError:
# Send HTTP response message for file not found
connectionSocket.send("HTTP/1.1 404 Not Found\r\n\r\n".encode())
connectionSocket.send("<html><head></head><body><h1>404 Not Found</h1></body></html>\r\n".encode())
# Close the client connection socket
connectionSocket.close()
serverSocket.close()
sys.exit()#Terminate the program after sending the corresponding data

@ -60,6 +60,13 @@ UDP报文没有可靠性保证、顺序保证和流量控制字段等可靠
\item 服务器程序(实验步骤中已给出)。 \item 服务器程序(实验步骤中已给出)。
\end{itemize} \end{itemize}
参考资料:
\begin{itemize}
\item {J.F Kurose and K.W. Ross, 计算机网络自顶向下方法第7版}
\end{itemize}
\subsection{实验步骤} \subsection{实验步骤}
\label{subsec:c2_s1_procedure} \label{subsec:c2_s1_procedure}

@ -47,6 +47,12 @@ Web服务器接受并解析HTTP请求从服务器的文件系统中获取请
\item 部分代码(实验步骤中已给出)。 \item 部分代码(实验步骤中已给出)。
\end{itemize} \end{itemize}
参考资料:
\begin{itemize}
\item {J.F Kurose and K.W. Ross, 计算机网络自顶向下方法第7版}
\end{itemize}
\subsection{实验步骤} \subsection{实验步骤}
\label{subsec:c2_s2_procedure} \label{subsec:c2_s2_procedure}

@ -76,6 +76,12 @@ RFC5321给出了SMTP的定义。SMTP有众多出色的性质
\item 部分代码(实验步骤中已给出)。 \item 部分代码(实验步骤中已给出)。
\end{itemize} \end{itemize}
参考资料:
\begin{itemize}
\item {J.F Kurose and K.W. Ross, 计算机网络自顶向下方法第7版}
\end{itemize}
\subsection{实验步骤} \subsection{实验步骤}
\label{subsec:c2_s3_procedure} \label{subsec:c2_s3_procedure}

@ -22,7 +22,7 @@
\begin{itemize} \begin{itemize}
\item 第一单元:谢怡、陈建发、洪劼超、雷蕴奇,厦门大学 \item 第一单元:谢怡、陈建发、洪劼超、雷蕴奇,厦门大学
\item 第二单元:吴荻,国防科技大学 \item 第二单元:吴荻、徐明、夏竟、胡罡,国防科技大学
\item 第三单元:张晓丽,昆明理工大学 \item 第三单元:张晓丽,昆明理工大学
\end{itemize} \end{itemize}

Loading…
Cancel
Save