问题标签 [usocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sockets - List 中的双向套接字
我正在尝试使用 TCP/IP 套接字(在 Linux 系统中使用 sbcl 和 usocket 库)从 Lisp 脚本与另一个程序进行通信。
到目前为止,我得到了这段代码:
该代码运行良好,但注释行除外:
所以我能够从另一个套接字(另一个程序)发送和接收消息 1,2,3 ...,并将消息从另一个程序发送回 lisp。但是,当我取消注释从 lisp 读取消息的行时,上面的代码似乎停止并永远等待。
common-lisp - SBCL 上的 USocket:连接被拒绝(Drakma 和 Dex)
运行简单的 HTTP 请求:
- 有
dexador
或drakma
- 在 SBCL 1.4.14 上
- 在 OS X 10.13.6 上
(ql:client-version)
等于“2017-03-06”和((defvar qlqs-info:*version* "2015-01-28"
我刚刚通过https://beta.quicklisp.org/quicklisp.lisp从https://www.quicklisp.org/beta/安装了 Quicklisp )- 通过 Emacs+SLIME 或仅使用 SBCL 从命令行
失败并出现错误(dex
堆栈跟踪)
或(drakma
堆栈跟踪)
在Clozure Common Lisp 版本 1.11.5 (DarwinX8664)上运行相同的请求效果很好。
有人知道原因吗?
sockets - Drakma 和 Dexador 在仅请求本地主机时都在 USocket 调用中失败,请求互联网工作正常
目前对我来说有一个无法解释的行为,感谢任何线索。
背景
我通过 PHP 内置开发 webserver 有一个本地运行的 wordpress 实例php -S localhost:8000 -t /doc/root/wordpress
。该网站有效,我可以curl "http://localhost:8000/"
成功获取它,我也可以在网络浏览器中打开它。
但简单的程序,如:
或者
——都失败了。
drakma
回溯失败:
有趣的是,如果我将 URI 更改为 Internet 上的任何其他 URI:
- 然后它工作正常。
所以问题可能出在我的本地机器和本地 php-server 的上下文中。这些简单的函数调用可能有什么问题?
我的笔记
在回溯中,我看到了这条线
(USOCKET:SOCKET-CONNECT "localhost" 8000 :PROTOCOL :STREAM :ELEMENT-TYPE FLEXI-STREAMS:OCTET :TIMEOUT 20 :DEADLINE NIL :NODELAY :IF-SUPPORTED :LOCAL-HOST NIL :LOCAL-PORT NIL)
。键:local-host
和:local-port
都是nil
。可能这就是问题所在,因为根据usocket 规范,这些参数负责调用bind()
本地地址(它与调用非本地地址有什么不同吗?)。我也没有在规范中找到
drakma:http-request
任何特殊参数来指定我正在请求本地服务器。根据示例https://edicl.github.io/drakma/#ex-basic-auth,请求任何 URI 都很简单,并且没有任何“本地地址”与非本地的区别。
加起来
为什么请求“ http://localhost:8000 ”不适用于
drakma
ordexador
。是否有人可以确认本地 Web 服务器的相同行为?bind()
对于本地和非本地地址,系统调用是否有所不同?
PS我已经问过类似的问题,首先似乎问题出在旧软件版本上。现在我发现了问题的更多细节并改写了它,所以我在这里提出另一个问题。
更新 1
也许,问题与用于开发的特定 PHP 内置网络服务器有关,因为该问题只能通过 PHP 网络服务器 + SBCL + Drakma 重现。但是 PHP 网络服务器可以很好地用于curl
Go 客户端、网络浏览器。
PHP版本:
PHP 7.3.1 (cli) (built: Jan 10 2019 13:16:34) (NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.1, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.1,版权所有 (c) 1999-2018,由 Zend Technologies 提供
-- 随brew install php
.
重现步骤
服务器:
然后与客户一起尝试:
-- 工作正常(状态码 404 预期并收到)。
语言:
-- 失败(状态码 404 是预期的,但connection refused
被返回)。
common-lisp - 错误:条件 Bad address (error #14) ,无法在 Clozure CL 上运行 Huntentoot
我正在尝试在 IBM power6 上运行 hunchentoot,但该平台上只有 clozure cl 可用。我试过这个:
1.lisp
然后我将它加载到 ccl 中:
我不知道如何解决它。
python - micropython usocket.IPPROTO_SEC 不可用
我尝试将usocket.IPPROTO_SEC用于 micropython,但它似乎不可用。我还应该做些什么来访问usocket.IPPROTO_SEC吗?
设置
我使用这个泊坞窗图像。
微蟒版本:1.11
描述
micropython 文档说usocket.IPPROTO_SEC是一个可用的常量,但是当我尝试访问它时,它不存在。
下面的输出显示了我如何尝试访问它以及 usocket 中可用的属性是什么。
common-lisp - 在这个 Common Lisp 示例中,socket-close 的目的是什么?
我从 Common Lisp Cookbook 中找到了这个例子,它展示了如何使用 usocket 启动 TCP 服务器。
该示例创建一个套接字对象并建立连接,然后写入套接字。万一发生错误,套接字写入被包裹在一个 unwind-protect 中,它将关闭套接字以便它可以被重用。我已经重写了导致错误的示例,但是当我多次运行它时,我得到一个USOCKET:ADDRESS-IN-USE-ERROR
. socket-close
如果我删除函数调用,行为是相同的。
esp8266 - 在 MicroPython 中使用轮询的非阻塞服务器套接字问题
我正在尝试组装一个简单的温度计,它可以在 OLED 显示屏上提供温度,也可以通过使用 MicroPython 的 ESP8266 上的 http 请求提供温度。
轮询对象已用于防止websocket阻塞循环(因此可以更新测量值和 OLED 显示)。
它似乎在一段时间内运行良好,但我发现了两个问题,希望能得到您的帮助:
- 即使我只连接一次,在 shell 终端中也会显示2 或 3 个请求,如下所示。为什么会发生这种情况,我该如何解决?是否可以让浏览器等待足够长的时间来发送第二个或第三个请求?
- 运行一段时间后,我将无法再连接到它,因为它不会响应。我的方法明显有问题吗?这是我从控制台得到的:
第 104 行对应于:
谢谢!
common-lisp - 错误:未找到外部函数:X86-DARWIN64::|gethostname|
将 usocket 快速加载到 Clozure Common Lisp 时出现以下错误
我正在使用带有 Mac OS 10.14.1 的 Macbook Pro,我今天从 CCL 1.12-dev 升级到 CCL 1.12.1,所以也许这就是导致问题的原因。
关于如何解决这个问题的任何建议?
我尝试下载 clozure CL 的 Mac App Store 版本,但崩溃了:
解决这个问题也可能完成这项工作。