如何使用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创建连接? (普通口齿不清) 的相关文章

  • 如何从 SBCL 解释器将特定函数写入文件?

    假设我在没有 SLIME 的情况下玩过 SBCL 没有任何简单的解释器 现在我想将几个函数保存在一个文件中 不是核心图像 只是文本形式的一些代码 我该怎么做呢 有两种方法可以做到这一点 使用DRIBBLE and or FUNCTION L
  • Python套接字发送EOF

    我有一个简单的文件传输套接字程序 其中一个套接字发送文件数据 另一个套接字接收数据并写入文件我需要发送一个致谢一旦从目的地到源的传输完成 目的地代码 s accept f s makefile f read 1024 源代码 s conne
  • IRC 机器人:错误 - 注册超时

    我正在用 C 语言制作一个简单的 IRC 机器人 我终于让机器人连接并接收信息 我的代码也应该发送 但服务器表现得好像没有发送任何内容 当机器人连接时 我收到以下信息 收到 roc esper net 通知授权 查找您的主机名 收到 roc
  • Python:监听两个端口

    import socket backlog 1 Number of queues sk 1 socket socket socket AF INET socket SOCK STREAM sk 2 socket socket socket
  • 以 C 语言编程设置 MTU

    客户端请求 MTU 限制为 1492 有没有办法在源代码 C 程序 中做到这一点 一般情况下还有其他方法吗 如果配置 为什么有人需要将 MTU 修改到一定的限制 有什么好处 而最 重要提示 更改 MTU 是否存在破解代码的风险 使用C编程方
  • 通过套接字发送字符串(python)

    我有两个脚本 Server py 和 Client py 我心中有两个目标 能够从客户端一次又一次地向服务器发送数据 能够将数据从服务器发送到客户端 这是我的 Server py import socket serversocket soc
  • Silverlight 套接字:模仿框架 Bind、Listen 和 Accept 方法?

    我有这个 NET Framework C 类 它实际上充当 TCP 连接的包装器Socket http msdn microsoft com en us library attbb8f5 aspxSystem Net Sockets 命名空
  • Common Lisp:循环列表中连续对的最佳方法是什么?

    有时我需要循环遍历列表中的连续对 我现在的做法是 loop for x on lst while not null cdr x do something on car x and cadr x 我想知道是否有更好的 内置的方法来做到这一点
  • 如何在 Java 中通过 TLS v.1.2 创建安全的 TCP 连接

    我想通过 TLS v1 2 在两个系统之间创建通信 其中包含的信息是保密的 我想避免 https Web 服务调用 而直接想在 TCP 层执行消息交换 您能否建议如何实现此功能 以便我可以通过 TLS v1 2 安全地传输数据 EDIT 阅
  • 确定 TCP Listen() 队列中当前积压的连接数

    有没有办法找出currentLinux 上 TCP 套接字上等待 Accept 的连接尝试次数 我想我可以在每个事件循环上点击 EWOULDBLOCK 之前计算成功的 Accept 数量 但我使用的是隐藏这些细节的高级库 Python Tw
  • 保持 WebSocket 连接处于活动状态

    我正在研究 WebSocket 协议 并尝试在后端使用 Python 实现一个简单的 ECHO 服务 它似乎工作正常 但连接建立后立即断开 这是我的客户
  • Discord-py Rewrite - Cog 中的基本 aiohttp Web 服务器

    我正在尝试将基本的 aiohttp 网络服务器集成到 Cog 中 使用 discord py 重写 我对齿轮使用以下代码 from aiohttp import web import discord from discord ext imp
  • express.io VS express + socket.io 有什么用处?

    我在这里发现了 socket io 和聊天示例 https github com rauchg chat example blob master index js https github com rauchg chat example b
  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • RTSP 设置后接收 RTP 数据包

    我正在尝试使用 Python 从 IP 摄像机流式传输 RTP 数据包 我能够使用 RTSP 协议发送描述 设置和播放命令 但是 我无法开始使用 RTP 传输实际视频流 这是代码 import socket def printrec rec
  • Common Lisp 中的原子和 Clojure 中的原子有什么区别?

    下列page http clojure org atoms讨论原子在 Clojure 中的工作原理 它并没有详细说明 Clojure 和其他 lisp 方言中原子之间的差异 Common Lisp 中的原子和 Clojure 中的原子之间的
  • 从物理上来说,套接字是什么?

    我总是更喜欢编程概念的物理含义而不是其逻辑含义 那么这个问题就来了 当我回顾套接字编程范例时 我注意到bind 连接 函数所做的就像tuning由创建的套接字socket 功能 所以我想那是什么socket 函数所做的只是创建一个数据结构
  • Common Lisp 包中的外部符号与内部符号

    在 Common Lisp 包的上下文中它们之间有什么区别 我正在阅读 SLIME 文档 一些命令广泛提到了这一点 语法是什么 你的符号export是外部的 in package cl user defpackage str use cl
  • 通过套接字的身份验证方法

    我正在尝试通过套接字进行身份验证sailsjs and passport 挑战似乎在于套接字连接没有会话 并且 sailsjs 模拟请求对象 导致它没有 Passport 中间件设置 这导致nodejs抛出一个错误 说req对象没有调用的方

随机推荐

  • ”?' 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