如何使用usocket创建连接? (普通口齿不清)

2023-12-23

我正在尝试使用 lisp 中的套接字来创建连接。使用 sbcl,我发现“usocket”可用。但我无法在服务器和客户端之间发送字符串。这是代码:

Server:

(ql:quickload "usocket")
(use-package 'usocket)
(defun default-tcp-handler (stream) ; null
  (declare (type stream stream))
  (terpri stream))
(defparameter *us* (socket-server "127.0.0.1" 4547 #'default-tcp-handler))
(defparameter *s* (socket-accept *us*))
(defparameter *ss* (usocket:socket-stream *s*))

Client:

(ql:quickload "usocket")
(use-package 'usocket)
(defparameter *us* (socket-connect "127.0.0.1" 4547))
(defparameter *st* (usocket:socket-stream *us*))

我先运行服务器代码,它冻结了。然后我运行客户端代码。但服务器似乎没有任何反应。 我尝试将字符串格式化为st stream:

(format *st* "hello, server")

但它返回零。

我该如何解决这个问题? 多谢。


我尝试了你的代码,没有错误,所以连接似乎一切正常。但是,如果您只写入流而不读取(更不用说刷新输出),则连接无法自行显现。这是一个修改版本,其中服务器从套接字读取一行:

;;; server
(ql:quickload "usocket")
(use-package :usocket)
(defun default-tcp-handler (stream)
  (declare (type stream stream))
  (format t "~A~%" (read-line stream))
  (finish-output))
(defparameter *us* (socket-server "127.0.0.1" 4547 #'default-tcp-handler))

;;; client
(ql:quickload "usocket")
(use-package :usocket)
(defparameter *us* (socket-connect "127.0.0.1" 4547))
(defparameter *st* (socket-stream *us*))
(write-line "hello server" *st*)
(finish-output *st*)

在你的情况下formatnil,因为它总是返回nil except format nil。服务器挂起是因为它开始监听。如果您不希望这样,则必须使用多个线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用usocket创建连接? (普通口齿不清) 的相关文章

  • Socket.*Async 方法是线程化的吗?

    我目前正在尝试找出最小化 TCP 主服务器中使用的线程数量的最佳方法 以便最大限度地提高性能 由于我最近阅读了大量 C 5 0 的新异步功能 异步并不一定意味着多线程 这可能意味着将有限状态对象分成较小的块 然后通过交替与其他操作一起进行处
  • 在 PCL 中使用 System.Net.Sockets(.Net 4.5 + 电话 8)

    我现有的 Net 库已经适用于 Net 4 5 和 Windows Phone 8 现在我想将其转换为可移植类库 突然我无法使用System Net Sockets不再了 我只检查了 Net 4 5和Windows Phone 8 未选择X
  • Rails 应用程序中的持久 TCP 连接

    我有一个在服务器上运行的第三方应用程序 它对客户端进行身份验证并返回响应 我的问题是 对于我收到 Rails 应用程序的每个请求 我都需要建立 TCP 连接并获取数据 是否可以有一个持久连接 以便我可以减少建立连接的开销 我希望你使用的是
  • Linux 中 AF_UNIX 数据报消息的最大大小是多少?

    目前我已达到 130688 字节的硬限制 如果我尝试在一条消息中发送更大的内容 我会收到一条消息ENOBUFS error 我已经检查过net core rmem default net core wmem default net core
  • java套接字/输出流写入:它们会阻塞吗?

    如果我只写入输出流上的套接字 它会阻塞吗 只有读取才能阻塞 对吗 有人告诉我写入可以阻塞 但我只看到套接字读取方法的超时功能 Socket setSoTimeout 对我来说 写入可能会阻塞是没有意义的 如果我只写入输出流上的套接字 它会阻
  • Erlang get_tcp:recv数据长度

    I user gen tcp recv Socket 0 用于数据接收 但我只能接收1次1418字节 我怎样才能收到发送的数据量 in gen tcp recv Socket 0 您正在询问内核 给我接收缓冲区中现在可用的所有数据 不过 内
  • 为什么在 emacs-lisp 中的函数参数之前使用#'?

    我熟悉 Emacs Lisp 但不熟悉 Common 或任何其他 Lisp 一些 Lisp 程序员建议 例如emacs 的基本功能 https stackoverflow com questions 17076646 a basic fun
  • 如何使用Python中字符串变量中存储的证书打开ssl套接字

    在Python中 ssl wrap socket可以从文件中读取证书 ssl wrap socket需要证书作为文件路径 如何使用从字符串变量读取的证书启动 SSL 连接 我的主机环境不允许写入文件 并且临时文件模块不起作用我正在使用Pyt
  • C 套接字客户端/服务器滞后

    我正在编写一个 C C 客户端 服务器套接字应用程序 此时 客户端每 50 毫秒连接一次服务器并发送一条消息 一切似乎都正常 但数据流并不连续 突然 服务器不再收到任何消息 然后一次收到 5 条消息 有时一切正常 有人知道这种奇怪行为的起源
  • 如何在java中通过socket发送Image数据类型

    我真的很困惑如何通过套接字发送图像数据类型 请帮我 我已经搜索了如何将 Image 数据类型转换为 char 但结果是 0 Use ImageIO http docs oracle com javase 1 4 2 docs api jav
  • Java 套接字 - 读和写

    问题 客户端没有收到任何消息 这是客户端和服务器的完整代码 CLIENT public class Client extends Socket public Client String hostName int port throws Un
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 从 CCL 检索(加载)源代码?

    我打了电话 load code lisp 用CCL 然后不小心删除了code lisp 有什么办法可以找回源代码吗 CCL 在内存中是否有它 这是一个非常特殊的功能 这里只为克洛祖尔CL 该代码在其他地方不起作用 这在 CCL IDE 中对
  • 从 sockaddr_storage 检索 ip 和端口

    我有一个sockaddr storage包含远程主机的 ipv4 地址和端口 我没见过这些struct但之前我不知道如何将它转换成struct我可以直接检索IP地址和端口号 我尝试过谷歌搜索struct但还没有发现任何东西 关于如何执行此操
  • 使用 paramiko 运行 Sudo 命令

    我正在尝试执行sudo使用 python paramiko 在远程计算机上运行命令 我尝试了这段代码 import paramiko ssh paramiko SSHClient ssh set missing host key polic
  • 在 C# 中的同一套接字上发送+接收数据

    我试图使用套接字 System Net Socket 甚至尝试过 TcpListener Client Etc 来在等待或已经发送数据时侦听数据 我做了以下事情 public byte bytesIn public byte bytesOu
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 递归分割列表函数 LISP

    split list 函数接受一个列表并返回一个由两个列表组成的列表 其中两个列表由输入的交替元素组成 我写了以下内容 defun split list L cond endp L list NIL NIL t let X split li

随机推荐

  • ”?' aria-label='如何修复“无法从方法组转换为 'Func”?'> 如何修复“无法从方法组转换为 'Func”?

    try var login ToServiceLogin lgParameters await Task Factory FromAsync loginOperation BeginLogin loginOperation EndLogin
  • 带有自定义图像的活动指示器

    I am loading a UIWebView and in the meantime I wan t to show a blank page with this activity indicator spinning siri act
  • 使用纯 JavaScript 获取元素的尺寸和位置[重复]

    这个问题在这里已经有答案了 情况 我想获取元素的尺寸和位置 Context 我正在制作一款纸牌游戏 卡片可以放置在板上 我需要能够检查他们的目的地是否在板上 然后我将存储它们相对于板的尺寸和位置的位置 这将有助于在可能使用不同屏幕尺寸的一群
  • 如何限制 Python 线程?

    我有一个线程执行大量 CPU 密集型处理 这似乎阻塞了其他线程 我该如何限制它 这是专门针对 web2py 的 但通用的解决方案就可以了 事实上 我不久前刚刚开始研究这个问题 你将无法更改线程优先级 但有一些方法可以解决这个问题 为了给您提
  • Google App Engine 中的 Memcache 1 MB 限制

    如何在 memcache 中存储大小大于 1 MB 的对象 有没有办法将其拆分 但仍然可以使用相同的密钥访问数据 我使用以下模块 blobcache 在 GAE 的内存缓存中存储大小大于 1Mb 的值 import pickle impor
  • 格式化目录中的所有 XML 文件并将它们保存在子目录中

    我正在尝试编写一个脚本来查看目录 找到所有 XML 文件 然后运行它们xmllint 并将格式化结果保存到名为的子目录中的同名文件中formatted 这是我到目前为止的脚本 find maxdepth 1 type f iname xml
  • Python:-mno -cygwin

    我正在尝试在 Windows 上学习大量 Python 其中包括安装多个软件包 但是每次我调用 python setup py install 时 我都会遇到 gcc 的 mno cygwin 问题 我已经阅读了很多文章 似乎他们希望这些单
  • R:取消列出为两列数据框(名称,值)

    我想从命名列表创建两列data frame 列表名称出现在第一列中 列表元素出现在第二列中 我设法做到了这一点 这完成了工作 但远非优雅 my list lt list one digit 0 9 two digits 10 29 thre
  • Netbeans 7.0 中的 SVN 1.7+

    我有一个使用totoiseSVN 的项目 在升级到 1 7 版本之前 一切正常 但是当我将 tortoiseSVN 升级到 1 7 版本时 当我尝试提交或显示历史日志或更新时 它会给我一个错误 org tigris subversion j
  • 使用 CAEmitterLayer 围绕圆或 CGPath 绘制粒子

    我正在尝试使用 iOS 5 的粒子系统 CAEmitterLayer 和 CAEmitterCell 围绕圆 或者更好的是 CGPath 绘制粒子 但我不知道该怎么做 我能做的最好的事情就是制作一个圆弧 通过修改 CAEmitterCell
  • MySQL 错误 1205:超出锁定等待超时

    我正在使用 SQLyog 将生产数据库同步到开发数据库 在 4 张桌子上 我得到 Error No 1205 Lock wait timeout exceeded try restarting transaction 研究网络似乎表明事务已
  • 获取 IntentService 中的地理定位上下文

    我正在创建一个 Android 类库 它调用内部 REST API 并且还利用需要 Context 的 Android 地理编码器类 特别是 getFromLocation 我计划将库设为 IntentService 以允许其异步运行 但我
  • Android - 获取当前时间而不依赖于设备时钟

    我注意到 System currentTimeMillis 时间取决于设备 如果我更改设备时钟上的时间 此方法将返回不同的答案 例如 如果现在的实时时间是 10 00 并且我将设备上的时钟更改为 9 30 则 System currentT
  • 如何在 dart/flutter 中继承静态方法?

    Dart Flutter 是否可以继承静态方法或工厂 或者我是否需要通过创建一个实例来访问该静态方法来解决这个问题 我的情况是 我想序列化一个对象 但需要访问它们的通用解析函数 abstract class Foo static Foo p
  • Android:带有毫秒的计时器?

    我想要的是以毫秒为单位测量时间 但是使用Chronometer有一个问题 它没有精度 它的最高分辨率是秒 我见过这个 使用 Android Chronometer 显示毫秒 https stackoverflow com questions
  • 将 IList> 转换为 List> 形式

    在以下代码中 response Values 返回 IList gt IList
  • 无法列出 *v1alpha1.Order:orders.certmanager.k8s.io 被禁止

    几个月前 我配置了自动 SSL 证书管理 如下所述 http docs cert manager io en latest tutorials acme dns validation html http docs cert manager
  • Ansible 中基于路径的参数的流程替换

    许多 Ansible 模块被设计为接受文件路径作为参数 但无法直接提供文件内容 如果输入数据实际上来自文件以外的其他内容 这会强制人们在磁盘上的某个位置创建一个临时文件 将预期的参数值写入其中 然后将该临时文件的路径提供给 Ansible
  • Java 7 WatchService - 忽略同一事件的多次出现

    javadoc 为StandardWatchEventKinds ENTRY MODIFY says 目录条目已修改 当为此注册目录时 事件 然后当观察到其中的条目时 WatchKey 将排队 该目录已被修改 该事件的事件计数为 1 或更大
  • 如何使用usocket创建连接? (普通口齿不清)

    我正在尝试使用 lisp 中的套接字来创建连接 使用 sbcl 我发现 usocket 可用 但我无法在服务器和客户端之间发送字符串 这是代码 Server ql quickload usocket use package usocket