libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
本帖最后由 ihyy 于 2012-11-13 14:33:19 编辑
实现了前面部分,使用了buffevent。
在收到数据的时候写入一个socket的A链接,同时再建立新连接B复制数据过去。这个新建的B是否可以把socket的链接和绑定都建立在A链接的执行函数中?这样的实现会不会有什么问题?
例:我在函数
libevnet_loop中实现event注册和启动socket,链接A。
// 监听读取的socket链接
listener=evconnlistener_new_bind(base,
listener_Rd, (void*)base, LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE, -1, (struct sockaddr*)&sin, sizeof(sin));
函数
listener_Rd中:
bufferevent_setcb(bev, conn_read, conn_write, conn_event, lo_eventWithState);
bufferevent_enable(bev, EV_READ);
bufferevent_disable(bev, EV_WRITE);
我是否可以在listener_Rd中才声明新的socket B并绑定,还是应该在原来声明socket的libevnet_loop中绑定新的B?如果,原声明处增加B之后的evenbuf该如何实现socket链接?
------解决方案--------------------就是做个反向代理而已, 参考libevent源码包里sample内的proxy.c吧,用的都是现成的函数, 帮你完成非阻塞连接, 然后监听事件.