2011-05-28 14 views
7

मैं emacs elisp सीखने और एक टीसीपी/आईपी पोर्ट और प्रक्रिया रिकॉर्ड जो वापस आने के लिए कनेक्ट करने के लिए एक छोटा प्रोग्राम लिखने की कोशिश कर रहा हूं। एक मामले में मैं सीएसवी डेटा पार्स कर रहा हूं और दूसरे में, मैं JSON पार्स करूँगा (उदा। जीपीएसडी से, और json.el धन्यवाद emacs के साथ आता है)। मैंने इको-सर्वर उदाहरण देखा है, लेकिन मैं एक क्लाइंट उदाहरण की तलाश में हूं जो मेक-नेटवर्क-प्रोसेस और प्रसंस्करण लाइन उन्मुख डेटा से कनेक्ट होता है। यह http नहीं है, इसलिए मैं यूआरएल-पुनर्प्राप्ति-सिंक्रनाइज़ेशन का उपयोग नहीं कर सकता।emacs elisp में सरल टीसीपी क्लाइंट उदाहरण?

मेरे elisp कौशल वास्तव में कमजोर हैं, इसलिए मैं वास्तव में बुनियादी उदाहरणों की तलाश में हूं।

धन्यवाद!

उत्तर

11

मैं कुछ बहुत आसान खोज रहा था। अंत में मैंने इसे एक छीनने वाले टीसीपी क्लाइंट उदाहरण से कोड करने में कामयाब रहा है। यह कमांड लाइन से काम करता है अगर आप इसे client.el के रूप में सहेजते हैं, 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)
4

Emacs wiki देखने के लिए एक शानदार जगह है।

TcpClient

+0

धन्यवाद! मैं वापस गया और टीसीपी क्लाइंट उदाहरण फिर से पढ़ा। मैंने नीचे सरल जवाब बनाने के लिए इसे काट दिया। –

2

देखें आप कुछ अधिक ठोस और उदाहरण के लिए एन्क्रिप्शन के संभावित समर्थन के साथ, आप network-stream.el और proto-stream.el पर एक नज़र रखना चाहिए चाहते हैं।

संबंधित मुद्दे