博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uip中关于web服务器的简单例子
阅读量:6950 次
发布时间:2019-06-27

本文共 939 字,大约阅读时间需要 3 分钟。

hot3.png

这是官方文档中的例子代码,以此了解一下uip处理web server是怎么样的。

struct example5_state{	char *dataptr;	unsigned int dataleft;}void example5_init(void){	uip_listen(HTONS(80));	uip_listen(HTONS(81));}void example5_app(void){	struct example5_state *s;		s = (struct example5_state)uip_conn->appstate;		if(uip_connected())	{		switch(uip_conn->lport)		{		case HTONS(80):			s->dataptr = data_port_80;			s->dataleft = datalen_port_80;			break;		case HTONS(81):			s->dataptr = data_port_81;			s->dataleft = datalen_port_81;			break;		}		uip_send(s->dataptr, s->dataleft);		return;	}		if(uip_acked())	{		if(s->dateleft < uip_mss())		{			uip_close();			return;		}		s->dataptr += uip_conn->len;		s->dataleft -= uip_conn->len;		uip_send(s->dataptr, s->dataleft);	}

结构体中含有要发送文件的地址和长度。初始化函数中分别监听80和81端口。app函数中根据端口值处理不同连接。这个app通过回应驱动即uip_asked(),如果发送文件长度小于uip_mss()中返回的长度,则表示文件发送完了,执行uip_close()。没有的话,调整文件指针和长度信息,继续通过uip_send()发送。

转载于:https://my.oschina.net/u/1587304/blog/399821

你可能感兴趣的文章
c++ STL模板(一)
查看>>
JAVA面向对象概述
查看>>
mysql触发器
查看>>
UVA 10441 Catenyms 欧拉道路
查看>>
wpf 进度条 下拉
查看>>
python之 模块与包
查看>>
x = cos x 的解析形式
查看>>
base64工具类
查看>>
UUIDGenerator
查看>>
NUC1931 Problem D 区间素数【素数筛选】
查看>>
webpack编译流程漫谈
查看>>
oracle锁
查看>>
Android攻略--单位转化器UC--Units Converter(学习笔记)
查看>>
js 的强制 类型 转换cast, 伪对象?
查看>>
jsfl 全选
查看>>
MySQL安装与配置
查看>>
为什么开发移动端web不使用jQuery
查看>>
查询结果列传行
查看>>
RH253读书笔记(4)-Lab 4 The Domain Name System
查看>>
Inside SharePoint 2010 (3): Developing a SharePoint Solution (Class Library Project)
查看>>