主题:tcp 共有51326人关注过本帖 |
---|
cvbcv |
1楼 |
![]() |
tcp ![]()
我下位机程序要从独立运行转入和上位机的tcp联网模式
期间搁一定时间就要检查和上位机是否建立连接  但是时间长了 比如1-2个小时后 怎么也和上位机建立不起来  只有重启后重新初试化 网口才行  该怎么做呢?  请赐教 转入联网的代码我是这样写的 if(c2==10&&Error_No==11)  {    c2=0;    NetPackagePro();    if(ConnIsEstablished(conno))    {                        if(!ConnIsFatal(conno))                        {                        printf("connected! Goto RealTime!p2=5\n");                          goto loop1;                        }                       }                  }                 if(p2==40&&Error_No==11)                  {                  p2=0;                  NetPackagePro();                     if(ConnIsEstablished(conno))                      {                        if(!ConnIsFatal(conno))                        {                        printf("connected!Goto RealTime");                          goto loop1;                        }                       }                     TermEthernetNet();                     InitEthernetNet(LocalIP,MaskCode);                     NetPackagePro();                     port = MyPort();                     conno = ConnOpen( ServerIP, "TCP/IP", port, 54088, NONBLOCKOPEN );                     if(ConnIsEstablished(conno))                      {                        if(!ConnIsFatal(conno))                        {                        printf("connected!Goto RealTime!p2=100");                          goto loop1;                        }                       }                  } |
单帖管理 | 引用 | 回复 ![]() |
cvxb |
2楼 |
![]() |
![]()
c2 和 p2  是分别循环 10次 和40次 检查一次连接情况
|
单帖管理 | 引用 | 回复 ![]() |
zhl |
3楼 |
![]() |
![]()
对于你的这种应用,连接的管理最好利用状态机方法,这样程序的运行效率更高。可参考我们提供的支持多连接TCP服务器的例子。
|
单帖管理 | 引用 | 回复 ![]() |
bcxv |
4楼 |
![]() |
![]()
你的意思是把下位机做为sever ?
另:多连接TCP sever的Demo 在光盘什么位置  谢谢 |
单帖管理 | 引用 | 回复 ![]() |
zhl |
5楼 |
![]() |
![]()
不是这个意思,下位机仍然可以作为client,但对于连接的管理方法可以借鉴 多连接TCP sever, 这个程序在 >TCP_IP协议库及例程>NETAPP 目录下,见TCPSVR1.prj。
|
单帖管理 | 引用 | 回复 ![]() |
cvbx |
6楼 |
![]() |
![]()
收到
|
单帖管理 | 引用 | 回复 ![]() |