0
点赞
收藏
分享

微信扫一扫

随想录(cloud 网络库)


    关于网络编程,我一直没有怎么学好。倒不是api不熟悉,主要是没有合适顺手的socket库,libevent什么也不熟悉。所以,乘着这一次学习的机会,自己写了一个网络库代码,基本上做到了异步触发的机制,每个用户只要做好自己的事件回调就可以了。目前代码已经放到github上,即​​https://github.com/feixiaoxing/socket​​。我把它称之为cloud,主要就是想让使用的同学尽可能忽略它的存在,用的简单但是特别的爽。


    为了教大家怎么使用,我自己也写了一些demo。这里就列举一个简单的应用。

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#include "type.h"
#include "socket.h"
#include "handle.h"


void is_connected(SOCK_HANDLE* p_hand) {

return;
}

// on close

void is_close(SOCK_HANDLE* p_hand) {

return;
}

// on read

void is_read(SOCK_HANDLE* p_hand) {

s8* buf;
u32* len;
STATUS result;

result = get_rcv_buf(p_hand->sock, &buf, &len);
assert(TRUE == result);

send_buf(buf, len);
free(buf);
}

// entry of executive file

int main(int argc, char *argv[]) {

STATUS result;
int sock;

if(argc < 2) {

printf("No port parameter. \n");
exit(1);
}

// init cloud

cloud_init();

// register call back

register_callback_func(is_connected, is_close, is_read);

// new socket

result = create_server_socket(&sock, atoi(argv[1]));
assert(result == TRUE);

// run cloud

cloud_run(sock);

return 0;
}



ps:

    github上面的代码已经删除,自从用了python的twisted和libevent,发现我这个库太弱了。



举报

相关推荐

0 条评论