void setup() { ebox_init(); uart1.begin(9600); w5500.begin(2,mac,lip,sub,gw); attach_eth_to_socket(&w5500); w5500.getMAC (ip); uart1.printf("mac : %02x.%02x.%02x.%02x.%02x.%02x\r\n", ip[0],ip[1],ip[2],ip[3],ip[4],ip[5]); w5500.getIP (ip); uart1.printf("IP : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]); w5500.getSubnet(ip); uart1.printf("mask : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]); w5500.getGateway(ip); uart1.printf("GW : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]); uart1.printf("Network is ready.\r\n"); tcp.begin(SOCKET7,3000); tcp.connect(rip,8080); }
int main(void) { setup(); while(1) { len = tcp.recv(buf); if(len > 0) { uart1.printf("\r\n============================"); uart1.printf("\r\n本地端口:%d",tcp.localPort ); uart1.printf("\r\n消息来源:%d.%d.%d.%d:%d", tcp.remoteIP[0],tcp.remoteIP[1],tcp.remoteIP[2],tcp.remoteIP[3],tcp.remotePort); uart1.printf("\r\n数据长度:%d",len); uart1.printf("\r\n数据内容:"); uart1.printf((const char *)buf); tcp.send(buf,len); } } }
/* @return received data size for success else 0. */ int transport_getdatanb(void *sck, unsigned char* buf, int count) { int rc; while(rc == 0) { rc = mqtt_tcp.recv(buf,count); } return rc; }
/* @return received data size for success else 0. 非阻塞式接收,需在应用层做循环判断 */ int transport_getdata(unsigned char* buf, int count) { return mqtt_tcp.recv(buf,count); }
/* @return sended data size for success else 0. */ int transport_sendPacketBuffer(unsigned char* buf, int buflen) { int rc = 0; rc = mqtt_tcp.send(buf,buflen); return rc; }
int transport_init(int local_sock,int local_port) { mqtt_tcp.begin(local_sock,local_port); return 1; }
int transport_connnected() { return mqtt_tcp.connected(); }
int transport_close(int sock) { mqtt_tcp.stop(); return 1; }
/** return >=0 for a socket descriptor, <0 for an error code @todo Basically moved from the sample without changes, should accomodate same usage for 'sock' for clarity, removing indirections @return 1 for success else 0:time out. */ int transport_open(char* addr, int port) { return mqtt_tcp.connect((unsigned char *)addr,port); }