首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs elisp中的简单tcp客户端示例?

emacs elisp中的简单tcp客户端示例?
EN

Stack Overflow用户
提问于 2011-05-29 00:41:56
回答 3查看 3.9K关注 0票数 14

我正在尝试学习emacs elisp,并尝试编写一个小程序来连接到TCP/IP端口并处理返回的记录。在一种情况下,我将解析CSV数据,而在另一种情况下,我将解析JSON (例如,来自GPSD,谢天谢地,json.el附带了emacs)。我已经查看了echo-server示例,但我正在寻找一个客户端示例,该示例展示了如何使用make-network-process连接并处理面向行的数据。它不是http,所以我不能同步使用url-retrieve-synchronously。

我的elisp技能真的很弱,所以我在寻找非常基本的例子。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-01 19:23:25

我在找一些更简单的东西。我终于设法从一个精简的TcpClient示例中编写了代码。如果您将其保存为client.el,执行chmod +x client.el和./ client.el,则可以从命令行执行此操作。它将打印出服务器决定发送的任何内容,并在300秒后退出。它真的需要一些注释来解释它是怎么回事。

代码语言:javascript
复制
#!/usr/bin/emacs --script

(defvar listen-port 9999
    "port of the server")

(defvar listen-host "127.0.0.1"
    "host of the server")

(defun listen-start nil
    "starts an emacs tcp client listener"
    (interactive)
    (make-network-process :name "listen" :buffer "*listen*" :family 'ipv4 :host listen-host :service listen-port :sentinel 'listen-sentinel :filter 'listen-filter))

(defun listen-stop nil
  "stop an emacs tcp listener"
  (interactive)
  (delete-process "listen"))

(defun listen-filter (proc string)   
  (message string))

(defun listen-sentinel (proc msg)
  (when (string= msg "connection broken by remote peer\n")
    (message (format "client %s has quit" proc))))

(listen-start)
(sleep-for 300)
(listen-stop)
票数 17
EN

Stack Overflow用户

发布于 2011-05-29 09:26:17

Emacs wiki是一个很好的查看位置。

请参阅TcpClient

票数 7
EN

Stack Overflow用户

发布于 2011-05-30 23:47:32

如果你想要一些更可靠的东西,例如可能支持加密,你应该看看network-stream.elproto-stream.el

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6162967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档