LWIP之TCP通信
来源:互联网 发布:游戏编程入门pdf 编辑:程序博客网 时间:2024/06/09 11:46
1、在ucosII系统中创建一个进程:
//TCP 2000
OSTaskCreate(tcp, (void *)0, &gstack_task_socket4[TASK_SOCKET4_STK_SIZE - 1], 14);
OSTaskNameSet(14, "tcp", &os_err);
OSTaskCreate(tcp, (void *)0, &gstack_task_socket4[TASK_SOCKET4_STK_SIZE - 1], 14);
OSTaskNameSet(14, "tcp", &os_err);
2、进程的具体处理:
void tcp(void *arg)
{
struct netconn *__pstConn, *__pstNewConn;
{
struct netconn *__pstConn, *__pstNewConn;
//建立TCP连接
__pstConn = netconn_new(NETCONN_TCP);
//将建立的连接进行端口绑定
netconn_bind(__pstConn, NULL, 2000); //HTTP_PORT,80端口
//开始监听
netconn_listen(__pstConn);
__pstConn = netconn_new(NETCONN_TCP);
//将建立的连接进行端口绑定
netconn_bind(__pstConn, NULL, 2000); //HTTP_PORT,80端口
//开始监听
netconn_listen(__pstConn);
while(1)
{
//接收外部来的连接
__pstNewConn = netconn_accept(__pstConn);
//具体处理函数
tcp_process(__pstNewConn);
{
//接收外部来的连接
__pstNewConn = netconn_accept(__pstConn);
//具体处理函数
tcp_process(__pstNewConn);
//如果连接有效,删除连接
if (__pstNewConn == NULL)
continue;
netconn_delete(__pstNewConn);
OSTimeDly(100);
}
if (__pstNewConn == NULL)
continue;
netconn_delete(__pstNewConn);
OSTimeDly(100);
}
具体处理函数如下:
void tcp_process(struct netconn *conn)
{
struct netbuf *inbuf;
char *rq;
u16_t len;
///获取数据
inbuf = netconn_recv(conn);
if(inbuf != NULL)
{
netbuf_data(inbuf, &rq, &len);
/* HTTP "GET /\r\n" */
if(rq[0] == 'G' && rq[1] == 'E' && rq[2] == 'T') {
netconn_write(conn, http_html_hdr, sizeof(http_html_hdr),
NETCONN_NOCOPY);
//发送数据
netconn_write(conn, indexdata, sizeof(indexdata),
NETCONN_NOCOPY);
//netconn_write(conn,tcp_data_send,sizeof(tcp_data_send),NETCONN_NOCOPY);
//发送数据
netconn_close(conn);
//关闭连接
}
{
struct netbuf *inbuf;
char *rq;
u16_t len;
///获取数据
inbuf = netconn_recv(conn);
if(inbuf != NULL)
{
netbuf_data(inbuf, &rq, &len);
/* HTTP "GET /\r\n" */
if(rq[0] == 'G' && rq[1] == 'E' && rq[2] == 'T') {
netconn_write(conn, http_html_hdr, sizeof(http_html_hdr),
NETCONN_NOCOPY);
//发送数据
netconn_write(conn, indexdata, sizeof(indexdata),
NETCONN_NOCOPY);
//netconn_write(conn,tcp_data_send,sizeof(tcp_data_send),NETCONN_NOCOPY);
//发送数据
netconn_close(conn);
//关闭连接
}
}
memp_free(MEMP_NETBUF, inbuf);
}
memp_free(MEMP_NETBUF, inbuf);
}
补充一点,两个数组的定义:
char indexdata1[] =
"<html> \
<head><title>Mr Lee's test page</title></head> \
<body> \
Hello , Mr Lee!\r\n \
Good Luck to you !\r\n \
This is a small test page. \
</body> \
</html>";
"<html> \
<head><title>Mr Lee's test page</title></head> \
<body> \
Hello , Mr Lee!\r\n \
Good Luck to you !\r\n \
This is a small test page. \
</body> \
</html>";
char http_html_hdr[] =
"HTTP/1.0 200 OK\r\n\
Content-type: text/html\r\n\r\n";
"HTTP/1.0 200 OK\r\n\
Content-type: text/html\r\n\r\n";
0 0
- LWIP之TCP通信
- LWIP之TCP
- LwIP之TCP
- LWIP之TCP层接收相关
- LWIP之TCP层发送相关
- LWIP之TCP层发送相关
- LWIP之TCP层接收相关
- LWIP之TCP层发送相关
- LWIP之TCP层接收相关
- STM32移植lwip之建立tcp服务器
- STM32移植lwip之建立tcp客户端
- LwIP BUG之TCP连接丢失
- LwIP BUG之TCP连接丢失
- stm32f103zet6+enc28j60上移植lwip,建立TCP客户端通信
- [LWIP学习]--LWIP通信邮箱
- LWIP之TCP层发送相关 (转)
- LWIP完全剖析详解之core/tcp.c
- 轻量级TCP/IP实现包Lwip之ARP
- 【C++ STL学习之三】容器deque深入学习
- cocos2dx学习笔记之回调函数:定时器schedule,普通回调callfunc,菜单回调menu_selector
- 1_Activity的生命周期和启动模式
- UVC驱动外接摄像头
- 第一天、猴子吃桃
- LWIP之TCP通信
- [Canvas绘图] 第31节 藏图阁(11) AlphaGo与李世石的围棋大战之第一局
- js中URL中带有空格参数的处理方法
- Git问题Everything up-to-date解决__提交代码遇到『Everything up-to-date』
- Computing image mean... ./examples/cifar10/create_cifar10.sh: 16: ./examples 怎么回事
- KNN算法
- log_format directive may be used only on http level
- 分布式服务框架的4项特性
- 礼拜一log~tag lib标签 & java ArrayList去重方式 & Mac本下对类声明的查询方法