usockets:打开套接字时如何指定外部格式

2023-12-26

我正在尝试连接到 mud 客户端,因此我使用 usockets 通过 tcp 连接。但是在我写完之后,我得到了解码错误读数。我有理由相信编码应该为 ascii,或者至少使用 :clrf 作为行尾指示符,因为在我读到的行上,行尾之前有一个 ^M

(let* ((sock (socket-connect "angalon.net" 3011))
       (stream (slot-value sock 'stream)))
  (format stream "guest~%")
  (force-output stream)
  (dotimes (i 40)
    (read-line stream))
  stream)

:UTF-8 stream decoding error on
#<SB-SYS:FD-STREAM
  for "socket 192.168.1.39:65516, peer: 93.174.104.58:3011"
  {1004129903}>:

  the octet sequence #(255 251 1 80) cannot be decoded.
   [Condition of type SB-INT:STREAM-DECODING-ERROR]

我可以验证流的外部格式确实是:utf-8,但问题是如何指定套接字给我的流的外部格式?

(let* ((sock (socket-connect "angalon.net" 3011))
       (stream (slot-value sock 'stream)))
  (stream-external-format stream))
;; => :UTF-8

只需查看 Clozure CL 后端的源代码,外部格式就被硬编码为ccl:*default-external-format*我的系统中是UTF-8。 SBCL 后端没有指定外部格式,但它可能会使用 SBCL 默认值创建套接字,这也是 UTF-8。我认为除了修改 usocket 之外,没有一种可移植的方法来更改外部格式。

也就是说,你可以绑定sb-impl::*default-external-format* to say :latin-1打电话之前socket-connect:

(let* ((sb-impl::*default-external-format* :latin-1)
       (sock (socket-connect "angalon.net" 3011))
       (stream (slot-value sock 'stream)))
   (stream-external-format stream))

;; :LATIN-1

编辑:也看看灵活流 http://weitz.de/flexi-streams/。我还没有测试过,但你可以将流转换为FLEXI-STREAM并指定外部格式。

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

usockets:打开套接字时如何指定外部格式 的相关文章

  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • SO_BINDTODEVICE Linux 套接字选项的问题

    我有一台带有两个网卡的电脑 一 eth0 用于 LAN 互联网 另一个用于与一个微控制器设备进行 UDP 通信 微控制器有一个 IP 192 168 7 2 和一个 MAC 地址 第二个电脑网络适配器 eth1 有 192 168 7 1
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • lua-socket:unix 域套接字?

    我使用的是 lua socket 3 0rc1 3 Ubuntu Trusty 附带的 和 lua 5 1 我正在尝试监听 unix 域套接字 我能找到的唯一示例代码是this http lua users org lists lua l
  • 当我退出应用程序时,如何删除 UNIX 域套接字文件?

    我有一个服务器应用程序 它在特定路径中创建一个 UNIX 域套接字 其名称和bind 到它 仅当我有意从应用程序代码中关闭 停止应用程序时 我才需要删除套接字 否则需要打开 我该怎么做呢 Thanks Edit 考虑一下我从终端内部启动并运
  • 使用套接字和 AsyncTask 强制关闭

    堆栈的人们大家好 请参阅下面我的班级代码和我的 LogCat 尝试连接时我受到强力关闭 如果有人能帮助我找出原因 我将不胜感激 基本上代码的作用是 从意图中获取 IP 地址 连接到端口 32 的 IP 然后发送一个命令 等待响应并发送另一个
  • RTSP 设置后接收 RTP 数据包

    我正在尝试使用 Python 从 IP 摄像机流式传输 RTP 数据包 我能够使用 RTSP 协议发送描述 设置和播放命令 但是 我无法开始使用 RTP 传输实际视频流 这是代码 import socket def printrec rec
  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • UDP SocketException - 通常只允许每个套接字地址使用一次

    尽管这里有很多非常相似的问题 但提供的答案都没有帮助我 这让我很难过 我有一个非常大的管理系统 我的任务是为其编写一些 UDP 数据包发送 接收 我已经编写了一个原型 一切都很好 所以我开始将我的代码合并到所述系统中 然而 我现在弹出了一个
  • 从物理上来说,套接字是什么?

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

    在 Common Lisp 包的上下文中它们之间有什么区别 我正在阅读 SLIME 文档 一些命令广泛提到了这一点 语法是什么 你的符号export是外部的 in package cl user defpackage str use cl
  • Socket.io - “套接字 ID”是否被视为敏感信息?

    我正在使用 Node js 和 socket io 实现一个简单的聊天应用程序 想知道在整个对象中共享所有客户端的套接字 ID 是否被认为是一个好的做法 为了解释一下 我的每个用户都是这样表示的 nick John Doe dateJoin
  • WhatsApp 如何实现每台服务器 200 万个连接?

    在 Ubuntu 上 可以打开的最大套接字数似乎受以下控制 cat proc sys net ipv4 tcp max orphans 262144 根据 Rick Reed 来自 WhatsApp 的一次演示 这些人使用 FreeBSD
  • 类型之上的类型谓词

    我正在寻求提高收到的编译器警告的质量和数量 Common Lisp 有没有办法包含类型谓词 超过声明的类型以及超过实例 特定于实现的答案 很好 我有兴趣看看它是如何完成的 如果有人这样做的话 在 CCL 中编译以下内容 defun non
  • 开放、安全的 TCP 通道的安全期限有多长?

    我们有一个网络服务 充当我们的客户和其他服务之间的网关 客户端向第三方服务发送消息并从第三方服务接收随机消息 客户端的服务器通过安全套接字打开到我们的 Web 服务器的通道 以便接收传入的消息 并且不必每隔几分钟轮询一次服务器 我的问题是
  • 如何获取已打开连接的套接字 ID/句柄/描述符? (.NET、C++、德尔福)

    我的问题已在标题中说明 我到底该怎么做呢 我有一个开放的连接 我想 劫持 它并通过它发送我的自定义消息 据我了解 这是通过套接字及其处理程序完成的 任何语言都可以 但首选 C NET 谢谢 UPDATE 我到底想要实现什么 我想为 post
  • 如何在C中模拟套接字

    我有一个使用套接字的函数 我会模拟它 但我找不到如何做到这一点 有没有办法在 C 中模拟套接字 Thanks 大多数系统 库函数是弱符号 https en wikipedia org wiki Weak symbol 这意味着您可以创建自己
  • 两种方式通信服务器/客户端架构?

    我试图找出我们的新应用程序使用哪种客户端 服务器技术 即 NET Framework 的哪一部分 我们将使用 NET 3 5 SP1 用 C 编写应用程序 它将由一个作为 服务器 运行的中央服务和分布在多台计算机上的多个客户端应用程序组成
  • 在 C 和 python 中实现 sendall() 和 recvall()

    我目前正在尝试在用 C 编写的服务器中实现 sendall 函数 并在用 python 编写的相应客户端上实现 receiveall 函数 当服务器和客户端都用相同的语言编写时 即都用 c 或都用 python 编写 我可以让服务器和客户端

随机推荐

  • 如何使用CSS在图像上添加覆盖颜色

    如果我有这样的图像 img src inshot1 jpg width 100px height 100px 悬停时我希望该块被某种颜色覆盖 例如 当您将鼠标悬停在其上时 您会看到一块具有相同高度和宽度的红色块 那么基本上是叠加吗 您可以通
  • 单个应用程序二进制文件如何支持 64 位和 32 位应用程序

    我们可以看到苹果的公告here https developer apple com news 根据这个文档 我们可以提交相同的二进制文件 支持 32 位和 64 位 我找到了一个堆栈溢出答案here https stackoverflow
  • 输入字段问题 - 关闭窗口但保持 Python 运行 [重复]

    这个问题在这里已经有答案了 有点长的问题 我正在创建一个输入字段 在 skrx 的主要帮助下 该字段显示在定制屏幕上 我已经对其进行了编程 以便当我按 Enter 键时 屏幕应该自行关闭 目前这个 pygame display quit 感
  • 如何在 TensorFlow 中有效地分配给张量的切片

    我想为 TensorFlow 2 x 中的一个模型中的输入张量切片分配一些值 我正在使用 2 2 但准备接受 2 1 的解决方案 我想做的一个非工作模板是 import tensorflow as tf from tensorflow ke
  • 如何调试通过 Windows Scheduler 运行的 exe? [复制]

    这个问题在这里已经有答案了 我正在使用 Windows Scheduler 来运行我编写的 exe 当调度程序启动我的 exe 时 如何跳入调试会话 更新1 我曾想过执行 Thread Sleep 然后附加到进程 当我尝试时 它说调试器已经
  • 加载 php 模块时出错

    我在 etc php 7 0 cli php ini 中添加了curl模块 extension usr lib php5 20121212 curl so 但是当我重新启动 php 时 我会 php m 我收到此错误 curl Unable
  • 如何在maven2中进行ear build?

    我对maven2很陌生 直到昨天我才成功地从maven2构建了war 我的下一个目标是为 war 文件构建 Ear 文件 其中还包括一些 jar 文件 你能帮忙吗 我将非常感激 问候 咬伤85 的官方文档Maven EAR 插件 http
  • msdeploy 的 Manifest.xml 文件中的 runCommand 提供程序

    我试图通过使用清单文件中的 runCommand 提供程序 通过 msdeploy 将运行批处理脚本 更多 前提是我能弄清楚 作为部署过程的一部分 这就是我的清单文件的样子
  • 如何加速 R 中的“expand.grid()”?

    我正在尝试加快创建包含两个向量之间所有可能组合的表 我们可以从以下位置获取此功能base R当我们使用expand grid 然而 我想知道我们是否可以使用以下工具实现相同的结果 但速度更快 collapse 包裹 StackOverflo
  • 在 PHPUnit (CIUnit) 中使用 YAML 文件作为数据提供者

    我正在使用 PHP CodeIgniter 框架编写一个应用程序 我正在尝试使用 CI Unit 扩展名为 PHPUnit 来测试应用程序 为了测试模型 我尝试加载 PHPUnit 文档中定义的 YAML 数据提供程序 但收到错误 如果我伪
  • Android Studio 不显示按钮的属性

    我在 Android Studio 中打开了一个空白的 Android 应用程序 当我尝试编辑按钮时 属性不存在 我是 Android 开发新手 正在遵循显示如何更改按钮中的文本的指南 但属性菜单缺少指南中看到的选项 Using 安卓工作室
  • API网关集成中使用代理集成有什么用?

    我正在尝试在 API Gateway API 和 VPC 背后的资源之间进行集成 创建集成时 有一个选项可供选择 使用代理集成 即使我没有选中此复选框并部署 API 我也可以通过 NLB 使 API 网关连接到 VPC 中的目标资源 所以
  • 在 php 中执行条件时出现问题[已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 press GET sell echo press OUTPUT IS SELL if press SELL header Loc
  • Android 共享首选项在删除文件后仍然可见

    我正在尝试使用共享首选项的应用程序 当我从中删除首选项文件时数据 data com your package name shared prefs mySharedPref xml手动使用 Android 监视器 应用程序仍然能够读取首选项值
  • DataGridView 级联/相关组合框列

    因此 我时常在 Winforms 的遗留应用程序中工作 并不总是熟悉绑定对象的最佳实践 基本上我有一个三部分集 其中有两个人 他们可能只有一种产品 但该产品可能会导致拥有不同的 SKU 集 有没有办法从第一个组合框的值触发组合框的事件和填充
  • Java EE 中的拦截器是什么?

    我正在尝试澄清关于 Java EE 中的拦截器的概念 我已经阅读了 Java EE 规范 但我对此有点困惑 请为我提供一些有用的链接或教程 以澄清我的概念 我们如何 何时 为何使用拦截器 拦截器用于实现业务逻辑中的横切关注点 例如日志记录
  • 从 activemq 主题获取消息时,logstash 输入速度非常慢

    我已经在logstash中配置了JMS输入来订阅JMS主题消息并将消息推送到弹性搜索 input jms id gt my first jms yaml file gt D softwares logstash 6 4 0 config j
  • 访问派生类中的受保护成员

    我昨天遇到了一个错误 虽然很容易解决 但我想确保我正确理解了 C 我有一个带有受保护成员的基类 class Base protected int b public void DoSomething const Base that b tha
  • 如果我从不将 MutexGuard 分配给变量,那么它在哪里?

    我不明白 哪里 MutexGuard在内部代码块中是 互斥锁被锁定并展开 产生MutexGuard 不知何故 这段代码设法取消引用MutexGuard然后可变地借用该对象 哪里去了MutexGuard去 另外 令人困惑的是 这种取消引用不能
  • usockets:打开套接字时如何指定外部格式

    我正在尝试连接到 mud 客户端 因此我使用 usockets 通过 tcp 连接 但是在我写完之后 我得到了解码错误读数 我有理由相信编码应该为 ascii 或者至少使用 clrf 作为行尾指示符 因为在我读到的行上 行尾之前有一个 M