乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 13|回复: 8

[编程交流] 通过LISP连接到Web服务器

[复制链接]

52

主题

156

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 19:52:36 | 显示全部楼层 |阅读模式
我在想,我想用LISP做什么可能是不可能的,但也许有一个比我聪明得多的人可以为我指明正确的方向。
 
基本上,我在想,如果客户不再愿意付费使用,如何让一个基于订阅的软件停止工作。
 
我认为,当程序在AutoCAD中运行时,它需要检查web服务器是否仍然订阅,然后执行其例程,否则无法工作。
 
你知道怎么做这样的事情吗?我想不出用lisp怎么能做到这一点,但也许是另一种编程语言?可能网络?
 
此外,我不认为每次调用例程时都检查服务器是非常有效的,也许有人知道更好的方法?
 
希望大家都能想到这一点。我以前曾设法将许可部分写入lisp,但不是通过连接到每天检查的web服务器。
 
谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:04:07 | 显示全部楼层
lee mac有一个check web server示例,每个autocad会话只运行一次。
 
  1. ;;---------------------=={ Internet Time }==------------------;;
  2. ;;                                                            ;;
  3. ;;  Returns the date and/or UTC time as a string in the       ;;
  4. ;;  format specified. Data is sourced from a NIST server.     ;;
  5. ;;------------------------------------------------------------;;
  6. ;;  Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url]       ;;
  7. ;;------------------------------------------------------------;;
  8. ;;  Arguments:                                                ;;
  9. ;;  format - string specifying format of returned information ;;
  10. ;;           using the following identifiers to represent     ;;
  11. ;;           date & time quantities:                          ;;
  12. ;;           YYYY = 4-digit year                              ;;
  13. ;;           YY   = Year, MO = Month,   DD = Day              ;;
  14. ;;           HH   = Hour, MM = Minutes, SS = Seconds          ;;
  15. ;;------------------------------------------------------------;;
  16. ;;  Returns:  String containing formatted date/time data      ;;
  17. ;;------------------------------------------------------------;;
  18. (defun LM:InternetTime ( format / result rgx server xml )
  19.    (setq server "[url]http://time.nist.gov:13[/url]")
  20.    (setq result
  21.        (vl-catch-all-apply
  22.            (function
  23.                (lambda ( / str )
  24.                    (setq xml (vlax-create-object "MSXML2.XMLHTTP.3.0"))
  25.                    (setq rgx (vlax-create-object "vbscript.regexp"))
  26.                    (vlax-invoke-method xml 'open "POST" server :vlax-false)
  27.                    (vlax-invoke-method xml 'send)
  28.                    (if (setq str (vlax-get-property xml 'responsetext))
  29.                        (progn
  30.                            (vlax-put-property rgx 'global     actrue)
  31.                            (vlax-put-property rgx 'ignorecase actrue)
  32.                            (vlax-put-property rgx 'multiline  actrue)
  33.                            (setq str (strcat " " (itoa (jtoy (+ (atoi (substr str 2 5)) 2400000.5))) (substr str 7)))
  34.                            (mapcar
  35.                                (function
  36.                                    (lambda ( a b )
  37.                                        (vlax-put-property rgx 'pattern a)
  38.                                        (setq format (vlax-invoke rgx 'replace format b))
  39.                                    )
  40.                                )
  41.                               '("YYYY" "YY" "MO" "DD" "HH" "MM" "SS")
  42.                               '( "$1"  "$2" "$3" "$4" "$5" "$6" "$7")
  43.                            )
  44.                            (vlax-put-property rgx 'pattern
  45.                                (strcat
  46.                                    "(?:[^\\d]+)([\\d]+)(?:[^\\d]+)([\\d]+)"
  47.                                    "(?:[^\\d]+)([\\d]+)(?:[^\\d]+)([\\d]+)"
  48.                                    "(?:[^\\d]+)([\\d]+)(?:[^\\d]+)([\\d]+)"
  49.                                    "(?:[^\\d]+)([\\d]+)(?:.+)\\n"
  50.                                )
  51.                            )
  52.                            (vlax-invoke-method rgx 'replace str format)
  53.                        )
  54.                    )
  55.                )
  56.            )
  57.        )
  58.    )
  59.    (if xml  (vlax-release-object xml))
  60.    (if rgx  (vlax-release-object rgx))
  61.    (if (vl-catch-all-error-p result)
  62.        (prompt (vl-catch-all-error-message result))
  63.        result
  64.    )
  65. )
  66. ;; Julian Date to Calendar Year - Lee Mac
  67. ;; Algorithm from: Meeus, Jean.  Astronomical Algorithms.
  68. (defun jtoy ( j / a b c d )
  69.    (setq j (fix j)
  70.          a (fix (/ (- j 1867216.25) 36524.25))
  71.          b (+ (- (+ j 1 a) (fix (/ a 4))) 1524)
  72.          c (fix (/ (- b 122.1) 365.25))
  73.          d (fix (/ (- b (fix (* 365.25 c))) 30.6001))
  74.    )
  75.    (fix (- c (if (< 2 (fix (if (< d 14) (1- d) (- d 13)))) 4716 4715)))
  76. )
  77. (vl-load-com) (princ)
回复

使用道具 举报

52

主题

156

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 20:08:11 | 显示全部楼层
谢谢BIGAL,我会调查一下,看看是否能按我想要的方式工作。非常感谢您的意见。我已经四处寻找了很长时间,试图解决这个问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:18:23 | 显示全部楼层
您可以将lisps自动编译为fas,也可以节省一些时间。
回复

使用道具 举报

52

主题

156

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 20:24:07 | 显示全部楼层
好的,谢谢你的小费。
我无法理解代码/我只想从网站上读取文本文件-http://thirdistudio.com.au/TestInfo.txt
 
我不需要做任何格式化,只需阅读文本文件。
 
有什么办法可以做到吗?
 
谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:31:26 | 显示全部楼层
这太容易了,不过完全归功于李·麦克
 
  1. (defun pingserver ( / xml str)
  2. (setq server "http://thirdistudio.com.au/TestInfo.txt") ; I would change this to get passed a unique filename
  3. (setq xml (vlax-create-object "MSXML2.XMLHTTP.3.0"))
  4. (vlax-invoke-method xml 'open "POST" server :vlax-false)
  5. (vlax-invoke-method xml 'send)
  6. (setq str (vlax-get-property xml 'responsetext))
  7. ; got your file !!!!!
  8. ;do your bit here
  9. (if xml  (vlax-release-object xml))
  10. )
回复

使用道具 举报

52

主题

156

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 20:43:15 | 显示全部楼层
好的,谢谢你,我真的很感激。它现在对我起作用了,尽管你可能想编辑代码,在末尾添加另一个括号:vlax false-对我来说不算太多,但任何可能只是复制和发布代码的人都没有意识到为什么它不起作用,只会得到一个格式错误的列表。。。。(我喜欢这些错误,尤其是当有数百行代码时。)
再次感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:47:28 | 显示全部楼层
谢谢你的推荐BIGAL
 
注意不要创建MSXML对象的多个实例,还要确保释放该对象的所有引用,因为AutoCAD不会自动从内存中释放此类对象!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:57:14 | 显示全部楼层
谢谢大家,一定是复制和粘贴不正确,李,我想知道如何关闭链接,我只是猜测了一点关于代码和令人惊讶的是多么简单。尝试了open的“CLOSE”安装,但vlax版本也这么做。
 
Andrew这应该是你代码中的一个技巧,而不是更大代码的一部分。创建函数库比不断重复代码要容易得多。我的一部作品在图书馆里有大约69首歌曲。lsp,do say(CHECKSECURITY HARDISK)这是一个硬盘ID例程这是一个很好的锁定软件的方法让最终用户运行一个程序发送一个加密版本给你用这个文件ID.txt发回主代码ie重命名testinfo。txt作为软件的一部分。
 
要获得全部学分,请访问Lee mac。com并查找HDserial number win7。lsp
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 01:56 , Processed in 0.538197 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表