OpenEdv-开源电子网

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

使用uip连接两个服务器,即断开一个连接马上连接另外一个

[复制链接]

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
发表于 2014-11-3 11:02:20 | 显示全部楼层 |阅读模式
5金钱
    大神,小弟现在使用uip连接两个服务器(ip地址和端口号不相同)。现在状况百出:1,不能断开服务端一,后面发送给服务器二的发送给服务器一了;2,断开连接一了,马上重新连接服务器一和服务器二,但数据是还是发送给服务器一,3,断开了服务器一,连接服务器二至少有三遍,且不能发送数据。

下面是部分代码,大神能帮我看一下么?看一下是哪里出错了,能不能提供一些建议。谢谢大家了。
重新连接的代码:
[mw_shl_code=c,true]void tcp_client_reconnect(void) {     uip_ipaddr_t ipaddr;     uip_ipaddr(&ipaddr,10,10,58,63);     uip_connect(&ipaddr,htons(m_port)); }[/mw_shl_code]

[mw_shl_code=c,true]switch(_state) {     case state1: { _state=state01;delay_ms(300); uip_SendCheck(); break;     }     case state2:     { _state=state01;delay_ms(300); uip_Get_Config(); break;     } default: break; }[/mw_shl_code]

[mw_shl_code=c,true]void uip_SendCheck(void) { while (1) { u8 KEY; KEY_Scan(0); uip_polling(); POINT_COLOR=GBLUE;BACK_COLOR=LGRAY; if(tcp_client_tsta!=tcp_client_sta) { if(tcp_client_sta&(1<<6)) { if(_state==state02) { POINT_COLOR=BROWN;BACK_COLOR=WHITE; if (tcp_client_databuf[4]=='0'&&tcp_client_databuf[5]=='0') { STM32_GUI_2(); Show_Str(2,2,100,12,(u8*)c1,12,0); Show_Str(110,2,80,12,(u8*)c2,12,0); Show_Str(180,2,80,12,(u8*)c3,12,0); LCD_ShowString(2,18,200,12,12,(u8*)num5);[/mw_shl_code] [mw_shl_code=c,true]                          _state = state2; tcp_client_sta&=~(1<<6); [/mw_shl_code] [mw_shl_code=c,true] tcp_client_sta&=~(1<<7); delay_ms(300);break; } else if(tcp_client_databuf[4]=='1'&&tcp_client_databuf[5]=='1') { LCD_ShowString(2,18,220,12,12,"ERROR!!!"); } tcp_client_sta&=~(1<<6); } } tcp_client_tsta=tcp_client_sta; } if(_state==state01) { if(tcp_client_sta&(1<<7)) { while(2) { if(USART2_RX_STA&0X8000) { memcpy(num5,(char*)USART2_RX_BUF,strlen((char*)USART2_RX_BUF)); sprintf((char*)tcp_client_databuf,"%%SP%%C^101^^^0^SN_%s^^^^N90%%+%%",num5); USART2_RX_STA=0;break; } } strcmp((char*)tcp_client_databuf,(char*)tcp_client_databuf); tcp_client_sta|=1<<5;delay_ms(100); _state=state02; } delay_ms(300); } } }[/mw_shl_code]

[mw_shl_code=c,true]void uip_Get_Config(void) {     DIR Folder;     FIL file;     m_port = 6969;     tcp_client_reconnect(); while(2)     { uip_polling(); if(tcp_client_tsta!=tcp_client_sta)[/mw_shl_code] [mw_shl_code=c,true]        {     if(tcp_client_sta&(1<<7))LCD_ShowString(160,307,200,12,12,"Connected2!");     else LCD_ShowString(160,307,200,12,12,"Connecting2!");     if(tcp_client_sta&(1<<6))[/mw_shl_code] [mw_shl_code=c,true]      { if(_state==state02) {      f_mkdir("/config");res=f_opendir(&Folder,"/config");[/mw_shl_code] [mw_shl_code=c,true]                     res=f_open(&file,"/config/50H90.TXT", FA_OPEN_ALWAYS | FA_WRITE | FA_READ );[/mw_shl_code] [mw_shl_code=c,true]                     f_lseek(&file,f_size(&file));      res=f_write(&file,tcp_client_databuf,strlen((char*)tcp_client_databuf),&br);      delay_ms(100);      f_close(&file);      if(tcp_client_databuf[1]=='O' & tcp_client_databuf[2]=='K')      {         _state = state4;         break;     } } tcp_client_sta&=~(1<<6);[/mw_shl_code] [mw_shl_code=c,true]            } tcp_client_tsta=tcp_client_sta; } if(_state == state01) { if(tcp_client_sta&(1<<7))[/mw_shl_code] [mw_shl_code=c,true]            { memset(tcp_client_databuf,0x00,sizeof((u8*)tcp_client_databuf)); strcpy((char*)tcp_client_databuf,"00000017^getconfig^|50H90"); printf("tcp_client_databuf = %s",tcp_client_databuf); tcp_client_sta|=1<<5; delay_ms(300); _state = state02; } delay_ms(100); } [/mw_shl_code] [mw_shl_code=c,true] } }[/mw_shl_code]
大神们,麻烦帮我看一下,如果你们有做过类似的,方便的情况下可不可以让我参考一下。谢谢啦,这个比较急。麻烦你们了。

最佳答案

查看完整内容[请看2#楼]

问题解决了,可以自由切换了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-3 11:02:21 | 显示全部楼层
问题解决了,可以自由切换了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-11-3 18:29:51 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-8 09:10:37 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,那个使用tcp_client_sta&=~(1<<7);不能真正断开连接,若要断开该怎么处理呢?并且我连接一个服务器,服务器会显示有两个设备,并且两个同时有效。该怎么只保持一个连接呢?还有有的时候连接局域网服务器发送或接受数据包的时候会打印出neither tcp nor icmp,这又是怎么回事?
感谢原子哥的悉心指导,谢谢!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-11-8 14:23:20 | 显示全部楼层
回复【3楼】正.点.原.子:
---------------------------------
这个我也不太熟。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-8 14:28:58 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
还是谢谢原子老大,我再继续研究研究~
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-11 10:06:18 | 显示全部楼层
继续求大神!!!
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-11 18:48:39 | 显示全部楼层
大神们在哪???
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-12 11:39:08 | 显示全部楼层
大神们在哪呢?
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2014-11-12 11:39:53 | 显示全部楼层
大神!
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
35
金钱
35
注册时间
2013-8-1
在线时间
5 小时
发表于 2015-2-2 13:19:31 | 显示全部楼层
回复【10楼】正.点.原.子:
---------------------------------
请问是怎么解决的? 我也遇到这个问题,同时多个设备连接,如何保持一个设备连?
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
 楼主| 发表于 2015-2-5 10:48:52 | 显示全部楼层
回复【11楼】sujunqin123:
---------------------------------
使用lwip加操作系统吧,多个设备的连接这样最方便~
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-7-6
在线时间
6 小时
发表于 2016-12-7 06:23:06 | 显示全部楼层
"我连接一个服务器,服务器会显示有两个设备,并且两个同时有效" ,这个问题解决了吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 00:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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