当前位置: 首页 > news >正文

网站页面多大如何在网上推广项目

网站页面多大,如何在网上推广项目,工业互联网解决方案,怎么创自己的网站在上一篇文章中#xff0c;我们详细探讨了FTransferor文件传输工具的设计与实现#xff0c;并展示了它在局域网文件传输方面的高效性。然而#xff0c;随着互联网应用场景的不断丰富#xff0c;传统的基于 TCP/UDP 的传输方式已经无法满足部分开发者的需求。特别是在跨平台…在上一篇文章中我们详细探讨了FTransferor文件传输工具的设计与实现并展示了它在局域网文件传输方面的高效性。然而随着互联网应用场景的不断丰富传统的基于 TCP/UDP 的传输方式已经无法满足部分开发者的需求。特别是在跨平台、跨网络传输场景中对 HTTP 协议的支持变得尤为重要。因此本篇文章将围绕 FTransferor 的优化改造为其增加 HTTP 协议支持并提升其在复杂网络环境下的适用性。 为什么要支持 HTTP 协议 HTTP 是一种通用性极强的传输协议具备以下特点 1广泛的兼容性几乎所有平台都支持 HTTP 协议可以无缝集成到现有的系统中。 2易用性基于 HTTP 的文件传输可以通过浏览器直接访问无需额外安装客户端工具。 通过为 FTransferor 增加 HTTP 协议支持我们可以大幅提升工具的实用性使其不仅适用于局域网场景还能满足跨网络的传输需求。 功能上的补充 在上一篇中我们对文件传输工具的功能仅支持上传文件在增加HTTP协议支持的同时还对下载、查看文件列表等功能进行了丰富并且利用密码支持了一定程度的安全性。 具体实现 增加HTTP Server并实现一个简单的拦截器 首先是HTTP Server这个实现相对简单主要就是文件下载和文件列表查看两个HTTP处理器。 const (PathList /filesPathDownload /download/QueryParamKey secret )func runHttpServer(port int) {fn : runHttpServerhttp.HandleFunc(PathList, secretFilterHandler(fileListHandler))http.HandleFunc(PathDownload, secretFilterHandler(fileDownloadHandler))fmt.Printf(%s is listening on port %d\n, fn, port)if err : http.ListenAndServe(fmt.Sprintf(:%d, port), nil); err ! nil {fmt.Println(Error starting file server:, err)} }拦截器实现主要就是拦截query参数中的secret key需要和启动HTTP Server时输入的参数一致。 func secretFilterHandler(next http.HandlerFunc) func(w http.ResponseWriter, r *http.Request) {return func(w http.ResponseWriter, r *http.Request) {getSecret : r.URL.Query().Get(QueryParamKey)if getSecret ! secret {http.Error(w, Unauthorized, http.StatusUnauthorized)return}next(w, r)} }运行以上代码后用户可以通过浏览器和客户端命令中查看和下载当前目录中的文件客户端的实现请继续往下看。 HTTP Server端具体实现 首先是文件列表查看功能的实现 func fileListHandler(w http.ResponseWriter, r *http.Request) {files, err : os.ReadDir(path)if err ! nil {http.Error(w, Unable to list files, http.StatusInternalServerError)return}result : make([]string, 0)w.Header().Set(Content-Type, application/json)for _, f : range files {if !f.IsDir() {result append(result, f.Name())}}marshal, err : json.Marshal(map[string]interface{}{data: result,})if err ! nil {http.Error(w, Unable to list files, http.StatusInternalServerError)return}_, _ w.Write(marshal) }其次是文件下载功能的实现 func fileDownloadHandler(w http.ResponseWriter, r *http.Request) {fileName : strings.TrimPrefix(r.URL.Path, PathDownload)filePath : filepath.Join(path, fileName)if _, err : os.Stat(filePath); os.IsNotExist(err) {http.Error(w, File not found, http.StatusNotFound)return}http.ServeFile(w, r, filePath) }客户端实现 客户端我们可以直接使用浏览器进行操作但是考虑到在Linux服务器的情况下可能只有终端命令行因此也提供命令的方式进行操作主要的思路就是增加命令参数根据参数去访问服务端不同的HTTP接口。 代码实现 func httpClient(action Action, f string) {httpServerAddr : fmt.Sprintf(%s%s, Scheme, server)client : http.Client{}switch action {case ActionGet:url : fmt.Sprintf(%s%s%s?%s%s, httpServerAddr, PathDownload, f, QueryParamKey, passwd)resp, err : client.Get(url)if err ! nil {fmt.Println(Error downloading file:, err)}defer func() {_ resp.Body.Close()}()// 创建文件以保存下载的内容file, err : os.Create(f)if err ! nil {fmt.Println(Error creating file:, err)return}defer func() {_ file.Close()}()// 将响应的内容写入文件if _, err io.Copy(file, resp.Body); err ! nil {fmt.Println(Error writing to file:, err)return}fmt.Println(File downloaded successfully!)case ActionList:url : fmt.Sprintf(%s%s?%s%s, httpServerAddr, PathList, QueryParamKey, passwd)resp, err : client.Get(url)if err ! nil {fmt.Println(Error downloading file:, err)}defer func() {_ resp.Body.Close()}()// 读取响应的bodybody, err : io.ReadAll(resp.Body)if err ! nil {fmt.Println(Error reading response body:, err)return}// 将body转换为mapvar data map[string]interface{}if err json.Unmarshal(body, data); err ! nil {fmt.Println(Error unmarshaling JSON:, err)return}// 打印mapfmt.Println(Data as map:, data)default:} }新功能演示 首先启动服务端TCP和HTTP共同启动但是注意不能使用同一个端口号 ./FTransferor server --path filepath --port 8081 --webport 8082 --secret DJ$HE23然后使用客户端命令查看文件列表 ./FTransferor.exe cli --server localhost:8082 --action list --passwd DJ$HE23下载文件 ./FTransferor.exe cli --server localhost:8082 --action get --passwd DJ$HE23 --file t.zip总结 通过本次优化我们为 FTransferor 增加了对 HTTP 协议的支持显著提升了其在不同网络环境下的适用性。未来我们计划进一步优化工具的交互体验例如通过 Web 界面实现更加友好的操作方式。
http://www.hkea.cn/news/14590158/

相关文章:

  • 如何做微信ppt模板下载网站广州建网站新科网站建设
  • 做美图 网站天津滨海新区地图全图
  • 古典棕色学校网站模板信息发布类网站模板
  • 网站开发的背景金融专业主要学什么
  • 宁波企业名称查询网站企业网站的建设内容
  • 扬中如何优化网站长沙优化网站推广
  • 网站开发软件排行榜网上书店网网站建设
  • 免费发布卖车信息网站淄博微网站建设
  • 创新的龙岗网站建设dw做游戏网站代码
  • 舞蹈培训机构网站模板静态网页模板源代码
  • 各大网站免费观看网站设计技术公司
  • 局域网网站怎样做数据库服装与服饰设计
  • wordpress建立外贸网站老网站改版做别的
  • 昆明网站建设公司哪家好聊城做网站的公司效果
  • 快手自媒体平台sem 优化软件
  • 潮州 做网站 有钱智能化建设网站
  • 网站开发和wordpress不允许注册
  • 邢台seo网站制作网站自适应 常用尺寸
  • 九江专业的企业网站建设公司从山海经取公司名
  • 有那种做订单的网站吗wordpress登录查看插件
  • 国外优秀设计网站推荐网站建设时如何选择合适的服务器
  • 做网站需要哪类商标微信小程序一起生活怎么注册
  • 响应式网站和自适应网站区别wordpress将用户锁在前台
  • 深圳外贸网站怎么建怎么看一个网站是由哪个公司做的
  • 网站架构设计的意义企业所得税优惠政策最新2023年
  • 中联建设集团股份有限公司网站个人摄影作品网站
  • 建立企业门户网站wordpress开发网上商城
  • 建站一条龙的服务流程是怎么样的做网站毕业设计存在的问题
  • 怎么做网站策划wordpress 显示不正常
  • 顺德网站制作案例信息友情链接的作用大不大