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

emacs elisp中的简单tcp客户端示例?,emacs,elisp,tcpclient,Emacs,Elisp,Tcpclient,我试图学习emacs elisp,并试图编写一个小程序来连接到TCP/IP端口并处理返回的记录。在一种情况下,我将解析CSV数据,而在另一种情况下,我将解析JSON(例如,来自GPSD,而JSON.el谢天谢地随emacs提供)。我已经看过echo服务器示例,但我正在寻找一个客户端示例,该示例显示如何连接make network process并处理面向行的数据。它不是http,所以我不能同步使用url检索 我的elisp技能非常弱,因此我正在寻找真正基本的示例 谢谢 这是一个值得一看的好地方

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

我的elisp技能非常弱,因此我正在寻找真正基本的示例

谢谢

这是一个值得一看的好地方


请参见

如果您想要更坚固的东西,并且可能支持加密,例如,您应该查看和
proto stream.el

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

#!/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)

谢谢我返回并再次阅读了TcpClient示例。我将其删减,以创建下面更简单的答案。