void do_tcp_client(void)
{
uint16 len=0;
switch(getSn_SR(SOCK_TCPC)) /*获取socket的状态*/
{
case SOCK_CLOSED: /*socket处于关闭状态*/
socket(SOCK_TCPC,Sn_MR_TCP,local_port++,Sn_MR_ND);
break;
case SOCK_INIT: /*socket处于初始化状态*/
connect(SOCK_TCPC,remote_ip,remote_port); /*socket连接服务器*/
break;
case SOCK_ESTABLISHED: /*socket处于连接建立状态*/
if(getSn_IR(SOCK_TCPC) & Sn_IR_CON)
{
setSn_IR(SOCK_TCPC, Sn_IR_CON); /*清除接收中断标志位*/
}
len=getSn_RX_RSR(SOCK_TCPC); /*定义len为已接收数据的长度*/
//send(SOCK_TCPC,ucTCPResponseFrame,12);
send(SOCK_TCPC, ucKLTCPResponseFrame, ucTCPResponseLen);
if(len>0)
{
if(bFrameSent)
{
bFrameSent = FALSE;
send(SOCK_TCPC, ucKLTCPResponseFrame, ucTCPResponseLen);
}
recv(SOCK_TCPC,buff,len); /*接收来自Server的数据*/
//buff[len]=0x00;
// recv(SOCK_TCPC, ucTCPRequestFrame, ucTCPRequestLen); //w5500接收数据
}
break;
case SOCK_CLOSE_WAIT: /*socket处于等待关闭状态*/
close(SOCK_TCPC);
break;
}
}
上边是子程序
是一个监听模式
|