题目:
首先用python建立一个server服务器:
from socket import *
serverPort = 5678
serverSocket = socket(AF_INET, SOCK_STREAM)
# AF_INET说明底层网络用了IPV4,SOCK_STREAM为套接字类型
serverSocket.bind(('', serverPort))
# ''表示服务器将监听所有的网络接口和ip地址
serverSocket.listen(2)# 1 表示最大连接数
print('The server is ready to receive')
while True:
# 这是一个无限循环,使得服务器能够持续地接受客户端的连接请求。
# 一旦有新的连接到达,服务器将会处理该连接,并继续等待下一个连接。
# 这样保证了服务器的持续运行,能够不断地处理客户端的请求。
connectionSocket, addr = serverSocket.accept()
try:
# 在Python中,try语句用来捕获可能发生异常的代码块。在这段代码中,try语句用来捕获可能发生的异常,比如文件不存在、文件读取错误等。通过在try块中处理这些异常,可以使服务器在遇到问题时不会立即崩溃,而是能够做出相应的错误处理,比如返回404 Not Found等错误信息给客户端。
message = connectionSocket.recv(1024).decode()
#表示最多接受1024字节,decode()将接受到的字节转为字符串
filename = message.split()[1][1:]
#提取出文件名部分
with open(filename, 'r') as f:
outputdata = f.read()
# Wrap the file content in a complete HTML structure
outputdata = "<html><head></head><body>" + outputdata + "</body></html>"
# Send HTTP response header
connectionSocket.send("HTTP/1.1 200 OK\r\n\r\n".encode())
# Send the modified HTML content to the client
connectionSocket.send(outputdata.encode())
connectionSocket.close()
except IOError:
# Send 404 Not Found response if 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>".encode())
connectionSocket.close()
serverSocket.close()
ps:•端口号设置:服务器尽量选择不常用的端口号,例如1234、6789等。
在记事本中编写一个HTML网页后保存为HTML格式:
此时若直接打开
http://localhost:5678/sg.html
运行py程序:
同样此时也可将localhost改为本地ip,同样也可得到相同结果。
用另一台电脑与主机连上同一局域网后,访问http://serverip:portname/XXX.html,也能得到相同界面