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);
}
}
[解决办法]
已经排除了另台机器网关问题,仍然连不上。
[解决办法]
有人解答不?