gpt4 book ai didi

sockets - 为什么我不能使用 usocket::socket-receive 从我的 usocket 读取数据?

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:26 24 4
gpt4 key购买 nike

我正在学习 common-lisp,我正在尝试使用 usocket library 使用客户端和服务器 tcp 套接字连接编写一个愚蠢的聊天程序.下面是我的函数。

(defun receive-thread (socket)
(block receiver-nested-loop
(loop
(let ((ready-socket (usocket::wait-for-input socket)))
(let ((return-buffer (usocket::socket-receive ready-socket nil nil)))
(if (not (eq return-buffer :eof))
(handle-received-data return-buffer)
(return-from receiver-nested-loop)))))))

我在 2 个终端中进行简单的测试运行,我手动调用 (main) 函数(我知道如何编译和编写脚本)。

第一个(用我的 ip 地址替换 x):sbcl --load chat.lisp -a xxx.xx.xxx.xx -s

第二个:sbcl --load chat.lisp -a xxx.xx.xxx.xx

当我的程序执行到上述函数时,出现以下错误:

debugger invoked on a SIMPLE-ERROR in thread
#<THREAD RUNNING {10069DF743}>:
There is no applicable method for the generic function
#<STANDARD-GENERIC-FUNCTION USOCKET:SOCKET-RECEIVE (1)>
when called with arguments
(#<USOCKET:STREAM-SERVER-USOCKET {10069DF673}> NIL NIL).

这是 pastebin对于我的完整代码。

谁能帮我弄清楚我做错了什么以及我需要做些什么来解决它?

编辑:删除程序中多余的“:”并重新测试。行为和错误保持不变。所有函数调用都是导出符号,我只是出于 C++ 的本能。

最佳答案

您发布的错误提示您错误地使用了 usocket:socket-receive(稍微清理了一下):

There is no applicable method for the generic function
USOCKET:SOCKET-RECEIVE
when called with arguments
USOCKET:STREAM-SERVER-USOCKET

Documentation for this function表示 usocket:socket-receive 将“从数据报套接字接收数据”。我怀疑您要读取的套接字是 TCP 套接字而不是 UDP 套接字。

关于sockets - 为什么我不能使用 usocket::socket-receive 从我的 usocket 读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com