首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

ARM7 lpc2478 以太网SOCKET可ping不可连难点(有代码),请赐教

2012-12-22 
ARM7 lpc2478 以太网SOCKET可ping不可连难题(有代码),请赐教。代码如下所示:功能,以太网上位机的SOCKET工具

ARM7 lpc2478 以太网SOCKET可ping不可连难题(有代码),请赐教。
代码如下所示:功能,以太网上位机的SOCKET工具连接后,发送什么数据,LPC2478收到后仍然返回什么数据。
以下代码在第一台机器试过,状态连通不稳定(时通时断),在另台机器上只能ping通,根本连不上。我将代码发给大家SHOW,帮忙看看哪里问题。

 void Task_Server(void *pdata)  
{   

SOCKET* s;
int ei;                         /* 存放返回值的变量             */
int RecvCnt=0;                        /* 接收数据个数                 */
uint8 RecvBuff[200];                        /* 接收缓冲区                   */
struct sockaddr serveraddr,clientaddr;                        /* sockaddr 结构体由协议栈类型、
                                                                       IP和端口组成     */
    
serveraddr.sin_family = 0;                        /* 协议栈类型                   */
serveraddr.sin_addr[0] = MCU_IP[0];                        /* 四位IP地址                   */
serveraddr.sin_addr[1] = MCU_IP[1];
serveraddr.sin_addr[2] = MCU_IP[2];
serveraddr.sin_addr[3] = MCU_IP[3];
serveraddr.sin_port = 8000;                        /* 服务器本地端口             */


s  = socket(AF_INET,SOCK_STREAM,TCP_PROTOCOL);/* 创建一个套接字               */
ei = bind(s,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); /* 绑定IP和端口到socket         */
ei = listen(s,1);/* 设置监听最大连接数    */
while(1)
{
ei = accept(s,(struct sockaddr *)&clientaddr,(int*)sizeof(clientaddr));
                                                                /* 等待客户机连接               */


if(ei!=SOCKET_ERROR)
{
while(getsocktcpsta(ei) ==3)/* 连接状态                     */
{

RecvCnt=recv(ei,RecvBuff,sizeof(RecvBuff),0);/* 接收客户机发送来的数据       */
if(RecvCnt == SOCKET_RCV_ERROR)/* 如果接收返回值指示错误       */
{
break;
}
else if(RecvCnt>0)
{
send(ei,RecvBuff,RecvCnt,0);/* 将数据回送给客户机           */
}
OSTimeDly(30);
}

close(ei);              /* 关闭连接                     */
OSTimeDly(100);
TCP_Abort(ei);/* 释放连接资源                 */

}

OSTimeDly(40); 
}
}


[解决办法]
已经排除了另台机器网关问题,仍然连不上。
[解决办法]
有人解答不?

热点排行