随想录(cloud 网络库)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

关于网络编程,我一直没有怎么学好。倒不是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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 10:25:01

随想录(cloud 网络库)的相关文章

如何使用网络库实现应用级消息收发

网络客户端ISocketClient和网络会话ISocketSession都继承了ISocketRemoteISocketRemote表示远程通信,核心就是收发数据.下面是ISocketRemote接口的主要实现 /// <summary>远程通信Socket,仅具有收发功能</summary> public interface ISocketRemote : ISocket { #region 属性 /// <summary>远程地址</summary>

专注于HTTP的高性能高易用性网络库:Fslib.network库

博客列表页:http://blog.fishlee.net/tag/fslib-network/ 原创FSLib.Network库(目前专注于HTTP的高性能高易用性网络库) FSLib.Network网络库使用教程[1] 基本使用 FSLib.Network网络库使用教程[2] 实例教程·美女们快到硬盘里来! 放一个抓取网页的信息监控小工具源码 原创FSLib.Network库发布 1.4 版8 12306订票客户端 FOR .NET 演示项目 [1]项目概况 12306订票客户端 FOR .

顶顶顶!! Xcode7.1下用CocoaPods安装Alamofire--swift下的第三方网络库

Xcode7.1下用CocoaPods安装Alamofire--swift下的第三方网络库 摘要 之前网上搜到的Alamofire是1.3版本的.所以安装到Xcode7.1下会报错,所以整理了Alamofire3.1版本用CocoaPods安装.方便大家使用. Alamofire swift AFNetWorking网络框架 CocoaPods 由于之前网上搜到的Alamofire是1.3版本的.所以安装到Xcode7.1下会报错,所以整理了Alamofire3.1版本用cocoapods安装.

Muduo网络库实战(二):实现服务器与客户端的连接

1. 方案的确定 1)基本需求 用户1000+, IO压力不大: 多个客户端打开网站,输入查询字符串strclient,发送给服务器=>服务器接收客户端发过来的数据并处理,将结果返回给客户端: 2)并发网络服务程序设计方案 详见:<Muduo_网络库使用手册>的1.6节-<详解Muduo多线程模型> @ muduo中TcpServer模式的选择:多线程模式 模式一:单线程,accept与TcpConnection用同一个线程做IO; 模式二:多线程,accept与EventL

0806------Linux网络编程----------Echo 网络库 学习笔记

1.Echo网络库的编写 1.1 Echo网络库1.0 1.1.1 Echo网络库 1.0 框架分析 a)class InetAddress: 主要用来定义一个struct sockaddr_in 结构(用自定义端口号初始化),并提供获取这个结构体成员如IP.Port等的接口: b)class Socket : 主要用来把一个普通的 sockfd 变为 listenfd(这里用一个sockfd初始化对象),提供bind .listen.accept 等接口. c)class TcpConnect

Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)

从这一篇博文起,我们开始剖析Muduo网络库的源码,主要结合<Linux多线程服务端编程>和网上的一些学习资料! (一)TCP网络编程的本质:三个半事件 1. 连接的建立,包括服务端接受(accept) 新连接和客户端成功发起(connect) 连接.TCP 连接一旦建立,客户端和服务端是平等的,可以各自收发数据. 2. 连接的断开,包括主动断开(close 或shutdown) 和被动断开(read(2) 返回0). 3. 消息到达,文件描述符可读.这是最为重要的一个事件,对它的处理方式决定

Cowboy.WebSockets 开源 WebSocket 网络库

Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Protocol) 协议标准,并部分实现了 RFC 7692 (Compression Extensions for WebSocket) 协议标准. WebSocket 可理解为建立在 TCP 连接通道上的更进一步的握手,并确定了消息封装格式. 通过定义控制帧 (Control Frame) 和数据帧

利用百度词典API和Volley网络库开发的android词典应用

 关于百度词典API的说明,地址在这里:百度词典API介绍 关于android网络库Volley的介绍说明,地址在这里:Android网络通信库Volley 首先我们看下大体的界面布局! 再帖张最终的效果图 看到效果图,应该知道布局很简单了对吧: 布局xml文件如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

网络库crash以及boost asio strand dispath分析

最近在做服务器的稳定性的相关测试,服务器的网络底层使用的是boost asio,然后自己做的二次封装以更好的满足需求. 服务器昨天晚上发现crash了一次,之前测试了将近半个多月,有一次是莫名的退出了,不过由于是新的测试服,忘记将ulimit -c进行修改了,所以没有coredump,这次又发生了. coredump如下: #0 0x0000000000000091 in ?? () #1 0x0000000000459729 in ClientHandler::HandleConnect(cp