TonyChyi

我在那一角落患过抽风

基于libxmmsclient的Go语言绑定
2016年01月14日 文章
代码:[email protected] 文档:[email protected] 在我发现 XMMS2 是使用了 C/S 架构以后,就有了一个想法: 用 Go/QML/XMMS2 写一个简单的音乐播放器,顺带可以收听网易云音乐 XMMS2 有很多种前端,从桌面到 Web 页面什么都有,然而大部分项目长期不更新了。 XMMS2 官方支持的语言有:C/C++/Python/Perl/Ruby。嗯,没有 Go 从上个周末开始,我尝试用抓包的方法来分析 XMMS2 的通讯协议,一无所获。 代码就很复杂了,还是二进制的协议,这怎么搞嘛! 不要重复造轮子!不要重复造轮子!不要重复造轮子! 重要的事情说三遍 显然更讨巧的办法是做一个绑定。 一开始我就有了下面这一套代码 package xmms2go /* #cgo CFLAGS: -I/usr/include/xmms2 #cgo LDFLAGS: -lxmmsclient #include <xmmsclient/xmmsclient.h> */ import "C" import ( "errors" "fmt" ) type Xmms2Client struct { Connection *X.xmmsc_connection_t result *C.xmmsc_result.t returnValue *C.xmmsv_t errorBuff *C.char } func NewXmms2Client(clientName string) (*Xmms2Client, error) { x := new(Xmms2Client) x.
Tags: #Go · #Xmms2 · #C

 

TonyChyi © 2018 GPLv2