newLISP与网络通信
文章平均质量分 61
炼气散人
等儿子高考后,或许会回来
展开
-
newLISP TCP通信的一些技巧
如何发送字节数组net-send仅仅接受string作为参数,也就是说只能发送字符串。后来才发现,原来这只是这个API的接口,通过字符串仍然能够发送二进制数据,比如:> (net-send socket "\019\000") 2只需要前面加上\转义符号即可。如何发送16位整数,并按照big-endian顺序发送答案是pack。看下面的例子:> (set 'socket (net-connect原创 2013-01-20 11:31:14 · 3907 阅读 · 0 评论 -
boost::asio 连接管理6
先来一个newLISP程序测试,发起一个连接,发送一个正确字符'a',连接不断,再发送一个错误字符,连接断开。测试脚本如下:(define (quit-for-error) ((println (net-error)) (exit))) (set 'socket (net-connect "localhost" 8888)) (if (net-send socket "a") (println原创 2013-01-15 20:25:11 · 3642 阅读 · 8 评论 -
newlisp读取数据超时功能
newlisp没有提供读取socket数据超时返回的功能。自己实现了一个:;; socket.lsp (context 'socket) ;; return the number of bytes which are ready to read ;; throw error if connection is closed (define (net-peek-ex s) (unless (n原创 2013-04-28 20:11:18 · 3184 阅读 · 0 评论 -
newlisp socket编程实例
有时候,我们需要一个方法获取自己上网的公网IP地址,可以无需编程,通过访问网站http://www.ip138.com/即可知道。不过这种方法不适合系统自动化运维。写C++或者其他程序是不是太麻烦了点。用newlisp来快速实现一个如何。先看实现服务器的代码:#!/usr/bin/newlisp ;; sender listens (constant 'max-bytes 1024) (if原创 2013-03-25 14:53:22 · 3431 阅读 · 0 评论 -
boost::asio 连接管理7
newLISP提供了简单的方法让我创建多个进程。下面的程序创建10个进程,每个进程发送几个'a', 最后发送一个'q'.(define (quit-for-error) ((println (net-error)) (exit))) (define (send-test) (set 'socket (net-connect "localhost" 8888)) (if (net-sen原创 2013-01-15 20:58:35 · 3601 阅读 · 0 评论