打印

探索者tcp服务器回显实验

[复制链接]
267|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第十代火影|  楼主 | 2018-7-15 12:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用例程 tcp服务器,简单修改代码,作为回显服务器使用,也就是发啥数据回啥数据,长时间测试下是否稳定
1.raw api都是采用回调函数来实现的,可以看到在tcp_server_accept函数中,注册了发送接收的回调函数,直接修改发送函数tcp_server_poll,如果有数据要发送
                        es->p=pbuf_alloc(PBUF_TRANSPORT,tcp_recv_num,PBUF_POOL);
                        pbuf_take(es->p,(char*)tcp_server_recvbuf,tcp_recv_num);

2.改为接收缓冲区tcp_server_recvbuf,长度为tcp_recv_num,这个需要自己定义下,然后在tcp_server_recv函数中,for(q=p;q!=NULL;q=q->next)  遍历整个链表之前保存一下当前数据包的大小tcp_recv_num=p->tot_len;
3.在大循环里面收到数据之后 tcp_server_flag|=1<<7;发送数据  
  测试下,数据丢的我想哭。。。反应太慢了

再修改下 直接吧接收函数中的数据拷贝全屏蔽,直接发送这个pbuf
tcp_recved(tpcb, p->tot_len);
      tcp_write(tpcb, p->payload, p->len, 1);
      pbuf_free(p);

测试下 反应很快了,但是数据包中的内容并没有拷贝到自己的接收缓存里面,回显实验虽然没有用到里面的数据,是直接发送的,但是实际用的话肯定是要拷贝的,但是拷贝的话又太慢了,这是个问题。。。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

363

主题

363

帖子

0

粉丝