TCP 服务器连接网页,根据网页不同的点击,返回不同的网页内容

本文介绍了一个简单的TCP服务器的实现过程,包括服务器的启动、监听、接收客户端连接及数据处理等核心步骤。通过Python代码示例展示了如何使用socket库创建一个能够响应HTTP请求的基本服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import socket
import re


def main():
pass
#服务器tcp服务器对象
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


#设置我们的端口地址重用
tcp_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)


#绑定端口号
tcp_server.bind(("",6789))
#改成被动模式
tcp_server.listen(True)
#循环去处理客户请求
while True:
client,addr = tcp_server.accept()         #我这个是简单版的,也可以在这边加上多进程,线程那个,xie'cheng实现多任务
# print(addr)


#接收数据
data = client.recv(1024).decode()
head_lines = data.splitlines()
try:
print(head_lines[0])
#GET /index.html HTTP/1.1
#使用正则去获取地址
re_match = re.match(r'[^/]+(/[^ ]*)', head_lines[0])   
#判断是否匹配了      
if re_match: #匹配 了     
#如果是/那么去首页
if file_name == "/":
file_name = "/index.html"
except Exception as e:
print(e)  #工作中是记录到文件


#返回数据
#响应头
#空行
#响应体
try:
headers = "HTTP/1.1 200 OK\r\n"




#会根据不同的地址返回不的内容
#打开文件写读文件内容
with open("./html%s"%file_name,'rb') as f:   #这样写有一个好处,如果是图片就不会有问题
body = f.read() #读取文件
#上面一般是ui设计师给你提前写好的文件,你拿来用就可以了

# body = "show page is find!"


# content = headers +"\r\n" +body
content = headers +"\r\n"


# client.send(content.encode("utf-8"))
client.send(content.encode("utf-8"))
client.send(body)
except Exception as e:
print(e)
#返回一个404的正常显示的页面
head = "HTTP/1.1 404 NOT FIND\r\n"
body = "not find page!"
content = head + "\r\n" + body




client.send(content.encode("utf-8"))




#关闭客户端
client.close()
#关闭服务器
tcp_server.close()




if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值