读书人

ARM7 lpc2478 以太网SOCKET可ping不可

发布时间: 2012-12-22 12:05:06 作者: rapoo

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);
}
}


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

读书人网 >单片机

热点推荐