#include #include #include #include #include #include #include #include "../SDK/SDKInfo.h" int IsRead = 0; static bool SendData(const char *data, int len, void *userData) { int fd = (int)(intptr_t)userData; if (len > 12) { printf("send[%s]\n", data + 12); } return write(fd, data, len) > 0; } static void ReadXml(const char *xml, int len, int errorCode, void *userData) { (void)len; (void)userData; ++IsRead; if (errorCode != 0) { printf("error code[%d]\n", errorCode); return ; } ISDKInfo sdkInfo = (ISDKInfo)userData; ParseXml(sdkInfo, xml, len); printf("read[%s]\n", xml); } int main(int argc, char *argv[]) { if (argc < 2) { printf("a.out ip\n"); return 0; } int fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) { perror("create socket faild"); return 1; } struct sockaddr_in addrSrv; memset(&addrSrv, 0, sizeof(addrSrv)); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(10001); addrSrv.sin_addr.s_addr = inet_addr(argv[1]); int result = connect(fd, reinterpret_cast(&addrSrv), sizeof(addrSrv)); if (result < 0) { close(fd); perror("Not connect client"); return 2; } ISDKInfo sdkInfo = CreateSDKInfo(); IHDProtocol proto = CreateProtocol(); SetProtocolFunc(proto, kSetSendFunc, (void *)SendData); SetProtocolFunc(proto, kSetSendFuncData, (void *)(intptr_t)(fd)); SetProtocolFunc(proto, kSetReadXml, (void *)ReadXml); SetProtocolFunc(proto, kSetReadXmlData, sdkInfo); RunProtocol(proto); UpdateItem(proto, sdkInfo, kGetProgram); char buff[1024]; for (;;) { int len = read(fd, buff, sizeof(buff)); if (len <= 0) { break; } UpdateReadData(proto, buff, len); if (IsRead > 0) { break; } } //ClearNode(sdkInfo); SetScreenNode(sdkInfo, 0); IsRead = 0; //AddAreaNode(sdkInfo, 0, "AreaGuid", 0, 0, 160, 80); //auto node = CreateTextNode(sdkInfo, "Text", "Text"); //AddPlayNode(sdkInfo, 0, 0, node); UpdateItem(proto, sdkInfo, kAddProgram); for (;;) { int len = read(fd, buff, sizeof(buff)); if (len <= 0) { break; } UpdateReadData(proto, buff, len); if (IsRead > 0) { break; } } FreeSDKInfo(sdkInfo); FreeProtocol(proto); close(fd); return 0; }