以太网做客户端程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以太网做客户端程序问题Post By:2009-12-10 14:43:00

本人用LPC2387以太网做客户端通讯,P不通,望各位给个建议

static uint8 MCU_IP[4] = {100,1,1,213}; // 设置MCU的IP地址等信息static uint8 MCU_Mark[4] = {255,255,255,0};

static uint8 MCU_GateWay[4] = {100,1,1,1};

static uint8 SPC_IP[4] = {100,1,1,222};

SOCKET s;

uint16 ei;

uint32 Temp; // TCP状态顺序号

uint32 LenNet;

uint8 TCP_rece_data[TCP_rece_length]; // TCP一次接收缓存

struct sockaddr serveraddr,clientaddr;

pdata = pdata;

serveraddr.sin_family = 0; //协议栈类型

serveraddr.sin_addr[0] = SPC_IP[0]; //四位IP地址

serveraddr.sin_addr[1] = SPC_IP[1];

serveraddr.sin_addr[2] = SPC_IP[2];

serveraddr.sin_addr[3] = SPC_IP[3];

serveraddr.sin_port = 6000; //服务器端口

clientaddr.sin_family = 0; // 设置客户端IP和端口

clientaddr.sin_addr[0] = MCU_IP[0];

clientaddr.sin_addr[1] = MCU_IP[1];

clientaddr.sin_addr[2] = MCU_IP[2];

clientaddr.sin_addr[3] = MCU_IP[3];

clientaddr.sin_port = 4000;

ZlgipInitial(MCU_IP,MCU_GateWay,MCU_Mark);

s = socket(AF_INET, SOCK_STREAM, TCP_PROTOCOL); // 建立TCP通信SOCKET(不可重入函数)

ei = bind(s,(struct sockaddr *)&clientaddr, sizeof(clientaddr)); // 绑定MCU(客户端)端口

while (1)

{

Temp = connect(s, (struct sockaddr*)&serveraddr, sizeof(serveraddr) ); // 连接服务器(不可重入函数)

if(Temp != SOCKET_ERROR)

{

while ((getsocktcpsta(Temp)==3) ) // 确保服务器处于连接状态

{

LenNet = recv(Temp, TCP_rece_data, TCP_rece_length, 0); // 以TCP通行方式接收服务器端的数据

if (LenNet == SOCKET_RCV_ERROR)

{

break;

}

else if (LenNet > 0)

{

send(Temp, TCP_rece_data, LenNet, 0); // 把接收到的数据回发给服务器

}

OSTimeDly(OS_TICKS_PER_SEC/200);

}

TCP_Abort(Temp);

OSTimeDly(OS_TICKS_PER_SEC/10);

close(Temp);

OSTimeDly(OS_TICKS_PER_SEC/10);

clientaddr.sin_port = MCU_Port;

ei=bind(s, (struct sockaddr*)&clientaddr,sizeof(clientaddr)); // 重新绑定客户端的IP地址和端口号

}

OSTimeDly(OS_TICKS_PER_SEC/2);

}

相关文档
最新文档