OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10733|回复: 7

LwIP 的tcp_connect求救

[复制链接]

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
发表于 2013-8-1 15:52:46 | 显示全部楼层 |阅读模式

用STM32F103ZET6+ENC28J60+LWIP,将开发板和电路通过路由连到同一局域网内,成功实现了client,server功能,正常连接,通信正常,也无大家说了上线下线的现象。后面加上了DHCP功能,成功分配IP,server功能测试,正常;但,测试client功能时,无法连接成功。
发现tcp_connect(client_pcb, &destip, 4, tcp_client_connected);并不调用tcp_client_connected;不知道什么原因。有人能解答一下么。
一关闭DHCP就能用,但打开后,client就不行了,server能用。
部分代码
int main(void)
{
   sys_config();
   SysTick_Init();        
   LwIP_Init();

   tcp_server_init();
   tcp_client_init();
 

   while(1)
   {
           
                   LwIP_Periodic_Handle(LocalTime);        
   }
}

void tcp_server_init(void)
{
        struct tcp_pcb *pcb;

        printf("tcp server init\n");
        
        pcb = tcp_new();

        tcp_bind(pcb, IP_ADDR_ANY, 1200);

        pcb = tcp_listen(pcb);
                                            
    tcp_accept(pcb, tcp_server_accept);        
}

void tcp_client_init(void)
{
        struct tcp_pcb *client_pcb;
        struct tcp_client_app_arg* app_arg;
        static struct ip_addr destip;
        printf("tcp client inti\n");

        IP4_ADDR(&destip,192,168,0,105);

        client_pcb = tcp_new();
        tcp_bind(client_pcb,IP_ADDR_ANY,4);
        if(client_pcb != NULL)
        {
                tcp_arg(client_pcb, mem_calloc(sizeof(struct tcp_client_app_arg), 1));   
                app_arg = client_pcb->callback_arg;
                app_arg->app_state = CLIENT_WAITING_FOR_CONNECTION;        
                tcp_connect(client_pcb, &destip, 4, tcp_client_connected);         
        }
        else
        {

                printf("tcp alloc failed\n");
        }
}

err_t tcp_client_connected(void *arg, struct tcp_pcb *pcb, err_t err)
{
        struct tcp_client_app_arg *app_arg = (struct tcp_client_app_arg *)arg;
        uint8_t* str = "Welcome to the client\n";
        
        printf("tcp client connected\n");

        tcp_err(pcb, tcp_client_errf);                 //指定出错时的回调函数
          tcp_recv(pcb, tcp_client_recv);                 //指定接收到新数据时的回调函数
        tcp_sent(pcb, tcp_client_sent);                 //指定远程主机成功接收到数据的回调函数
        tcp_poll(pcb, tcp_client_poll, 4);         //指定轮询的时间间隔和回调函数(*250ms)

        tcp_write(pcb, (const char *)str, strlen(str), 1);
        app_arg->app_state = CLIENT_WAITING_FOR_CMD;

        return ERR_OK;
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-8-1 21:58:32 | 显示全部楼层
client模式,你等有连接以后,再启动client去连接,这样试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
 楼主| 发表于 2013-8-2 09:12:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
这个client模式是,先打开服务器,程序开始运行后,client去发起连接的。
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11471
金钱
11471
注册时间
2013-3-8
在线时间
1226 小时
发表于 2014-11-17 20:00:58 | 显示全部楼层
回复【3楼】can123dao:
---------------------------------
你这个问题解决了吗?能分享一下源代码吗?
回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
 楼主| 发表于 2014-11-17 20:03:35 | 显示全部楼层
一些源码

LWIP SERVER AND CLIENT .zip

18.55 MB, 下载次数: 688

回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
 楼主| 发表于 2014-11-17 20:07:56 | 显示全部楼层
回复【4楼】augustedward:
---------------------------------
楼下
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11471
金钱
11471
注册时间
2013-3-8
在线时间
1226 小时
发表于 2014-11-17 20:28:46 | 显示全部楼层
回复【6楼】can123dao:
---------------------------------
谢谢啦,先看一下。我的CLIENT只能连上一次,后面就不能用了。一直能PING通。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-6-9
在线时间
0 小时
发表于 2015-6-10 09:27:42 | 显示全部楼层
回复【7楼】augustedward:
---------------------------------
我也遇到这样的问题,建立一次链接然后就显示超时了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 18:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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