搜索
bottom↓
回复: 6

请问在LWIP中配置IP_FRAG后差别为何很大?

[复制链接]

出0入0汤圆

发表于 2011-7-12 09:03:21 | 显示全部楼层 |阅读模式
TCP服务器为LPC1768、客户机为以太网PLC。

在LWIP中

#define IP_FRAG    0   时,响应客户机较快都在毫秒级,客户机连10次有5次连不上。

#define IP_FRAG    1   时,响应客户机很慢都在3秒左右,但客户机每次都能连上。

Ip_frag是判断是否支持分片。为何差别这么大。

出0入0汤圆

发表于 2011-7-13 09:36:34 | 显示全部楼层
ping的情况如何

你这里又如何判断响应的时长?TCP、UDP?

出0入0汤圆

 楼主| 发表于 2011-7-13 15:33:34 | 显示全部楼层
回复【1楼】ffxz
-----------------------------------------------------------------------

谢谢ffxz关注解答


我用科来网络分析软件抓包分析收发帧,IP_FRAG 为O时是几个毫秒响应,IP_FRAG 为 1时是几秒响应。

因为数据帧(几十字节)不大,继续作如下改动

#define TCP_WND           2048   // 原4096
#define TCP_MSS           512    // 原1500
#define TCP_SND_BUF       (4 * TCP_MSS)

运行如下,在客户机不复位时,服务器复位每次都能稳定通信。
如在通信过程中将客户机复位后,再复位服务器,有时只能通信几十帧,就不能正常通信了。


另请教,LWIP应对服务器与客户机正常通信时,复位客户机后异常处理有无合适的方法。
客户机是施耐德M340智能PLC,PLC有时很容易连上,如PLC非正常断网,服务器难与其相连,除非将PLC复位,
但PLC与PC机网络无此问题,是否WINDOWS上的TCP/IP比LWIP地规则全面。


小弟先行谢过大师指点出路。

出0入0汤圆

发表于 2011-7-13 15:56:06 | 显示全部楼层
数据量不大,应该与frag关系不大。关键的还是多分析下抓包下来的报文;lwip中记得开keepalive,这个非常重要,否则容易出现死连接

出0入0汤圆

 楼主| 发表于 2011-7-13 16:42:24 | 显示全部楼层
回复【3楼】ffxz
-----------------------------------------------------------------------
好的,晚上我按您的意思修改。
开发环境:LPC1768开发板、用的1768内置以太网控制器。

出现故障后服务器应答非TCP数据包,PING的时间由1毫秒变成几秒响应。

这是我用WEB服务器改的TCP服务器
void http_server(void *pdata)
{
  struct netconn *conn, *newconn;
  u8_t  err;
  u16_t buflen,rexmit_len;

  conn = netconn_new(NETCONN_TCP);
  netconn_bind(conn, NULL, 502); // 设绑定端口 原80
  netconn_listen(conn); // 侦听
  while (1)
  {
     newconn = netconn_accept(conn);  /* Grab new connection. */
     if(newconn != NULL)  /* Process the new connection. */
     {
        struct netbuf *buf;
        void *data;
        u16_t len;
        while((buf = netconn_recv(newconn)) != NULL)
        {
            do
           {
                netbuf_data(buf, &data, &len);
                memcpy(appbuf, buf->ptr->payload, len);
                rexmit_len = prt_app_proc(TxBuf1, appbuf, buflen);  // 应用规约解析调用
                err = netconn_write(newconn, TxBuf1, rexmit_len, NETCONN_COPY); // 应用应答
                if(err != ERR_OK)
                {
                     /*printf("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err));*/
                }
            }while(netbuf_next(buf) >= 0);
            netbuf_delete(buf);
        }
         //netbuf_delete(buf);  // 如此处,TCP不回应客户机
        netconn_close(newconn);
      }       
   }
}

出0入0汤圆

发表于 2011-7-13 18:36:48 | 显示全部楼层
ping由毫秒变成几秒,是否是驱动有问题?换0.4.0 beta2中的驱动试试

出0入0汤圆

 楼主| 发表于 2011-7-14 11:18:48 | 显示全部楼层
0.4.0 beta2中的驱动是以太网,还是换LWIP版本。
LWIP要不要换成1.3.1的版本。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 11:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表