查看: 3001|回复: 6

[求助] LWIP RAW

[复制链接]

该用户从未签到

11

主题

80

帖子

0

中级会员

Rank: 3Rank: 3

积分
298
最后登录
2015-7-21
发表于 2015-3-25 11:18:37 | 显示全部楼层 |阅读模式
求大神解答一下:我按照lwip RAW的配置方法来让FRDMK64做为client和PC机进行通信,下面是我的程序,一直就是连不上,可以ping通,但是PC机上的server找不到这个client,数据也发不出去求大神解答下问题出在哪里?
int main(void)
{  
    struct netif fsl_netif0;
    ip_addr_t fsl_netif0_ipaddr, fsl_netif0_netmask, fsl_netif0_gw;
    app_low_level_init();
    OSA_Init();
    lwip_init();       
    IP4_ADDR(&fsl_netif0_ipaddr, 192,168,2,102);
    IP4_ADDR(&fsl_netif0_netmask, 255,255,255,0);
    IP4_ADDR(&fsl_netif0_gw, 192,168,2,100);
    netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, NULL, ethernetif_init, ethernet_input);
    netif_set_default(&fsl_netif0);
    netif_set_up(&fsl_netif0);
    TCP_CLIENT_init();
    while(1)
    {   
#if !ENET_RECEIVE_ALL_INTERRUPT
        ENET_receive(enetIfPtr);
#endif
        sys_check_timeouts();
        tcp_connect(Clipcb,&ipaddr,7,TcpCli_Connected);
    }
}


我知道答案 目前已有6人回答
回复

使用道具 举报

该用户从未签到

11

主题

80

帖子

0

中级会员

Rank: 3Rank: 3

积分
298
最后登录
2015-7-21
 楼主| 发表于 2015-3-25 11:29:37 | 显示全部楼层
是因为回调函数或者三次握手通信的时候没有接收PC机传回来的信息吗? tcp_input函数应该怎么进行配置,放在中断里吗?
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-3-25 15:32:26 | 显示全部楼层
楼主你好!
帮你问了相关的专家,他们的回复是这样的:
1,用抓包工具看一下PC机是不是收到了来自板子的TCP链接请求(SYN)包
2,注意一下是不是PC机的防火墙拒绝了来自板子的TCP连接请求

3,TCP_CLIENT_init()API的具体信息。
4,while(1)中,调用tcp_connect API函数需要加上一些延时试试
5,你可以debug看看,代码是否进入tcpcli_connected API, 因为如果成功和PC的sever链接,tcpcli_connected会被调用。
6,不需要配置tcp_input

回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

80

帖子

0

中级会员

Rank: 3Rank: 3

积分
298
最后登录
2015-7-21
 楼主| 发表于 2015-3-27 16:59:30 | 显示全部楼层
谢谢! 是第二个问题,防火墙没有关闭,关闭防火墙之后就可以将K64作为client与PC进行通信了。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

80

帖子

0

中级会员

Rank: 3Rank: 3

积分
298
最后登录
2015-7-21
 楼主| 发表于 2015-3-27 17:00:27 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-3-25 15:32
楼主你好!
帮你问了相关的专家,他们的回复是这样的:
1,用抓包工具看一下PC机是不是收到了来自板子的TCP ...


谢谢! 是第二个问题,防火墙没有关闭,关闭防火墙之后就可以将K64作为client与PC进行通信了。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

80

帖子

0

中级会员

Rank: 3Rank: 3

积分
298
最后登录
2015-7-21
 楼主| 发表于 2015-3-27 17:05:31 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-3-25 15:32
楼主你好!
帮你问了相关的专家,他们的回复是这样的:
1,用抓包工具看一下PC机是不是收到了来自板子的TCP ...

我这里还有一个问题,我现在用socket进行通信实验,下面是代码:
int main(void)
#endif
{
  ip_addr_t fsl_netif0_ipaddr, fsl_netif0_netmask, fsl_netif0_gw;
  int s;
  int ret;
  struct sockaddr_in addr;
  int err;  
  
  memset(&addr, 0, sizeof(addr));
  addr.sin_len = sizeof(addr);
  addr.sin_family = AF_INET;
  addr.sin_port = PP_HTONS(SOCK_TARGET_PORT);
  addr.sin_addr.s_addr = inet_addr(SOCK_TARGET_HOST);
  
  app_low_level_init();
  OSA_Init();
  lwip_init();
  IP4_ADDR(&fsl_netif0_ipaddr, 192,168,2,102);
  IP4_ADDR(&fsl_netif0_netmask, 255,255,255,0);
  IP4_ADDR(&fsl_netif0_gw, 192,168,2,100);
  netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, NULL, ethernetif_init, ethernet_input);
  netif_set_default(&fsl_netif0);  
  netif_set_up(&fsl_netif0);  
  
  /* create the socket */
  s = lwip_socket(AF_INET, SOCK_STREAM, 0);
  LWIP_ASSERT("s >= 0", s >= 0);
  for(;;)
    {
  /* connect */
  ret = lwip_connect(s, (struct sockaddr*)&addr, sizeof(addr));
  /* should succeed */
  LWIP_ASSERT("ret == 0", ret == 0);

      /* write something */
      ret = lwip_write(s, "test", 4);
      LWIP_ASSERT("ret == 4", ret == 4);

      /* close */
      ret = lwip_close(s);
      LWIP_ASSERT("ret == 0", ret == 0);
    }     
}  
现在的问题是 s 的返回值一直是-1,我上网找了找其他关于socket编程做client的例子,看不出来函数调用有哪些不对的地方,所以是不是程序里面有哪些初始化没有完成?求大神解答下
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-4-2 14:07:37 | 显示全部楼层
非常感谢你的技术问题。我们建议您将此Kinetis的技术问题提交到飞思卡尔的英文论坛。网址是http://community.freescale.com/welcome 谢谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-23 04:59 , Processed in 0.100930 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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