TMPSong __fastcall TMPSong::FromCursor (Androidapi::Jni::Graphicscontentviewtext::_di_JCursor c) { TMPSong song; song.Artist = JStringToString(c->getString(0)); if (song.Artist == "<unknown>") song.Artist = "Unknown"; song.Title = JStringToString(c->getString(1)); song.Path = JStringToString(c->getString(2)); song.Album = JStringToString(c->getString(3)); song.Duration = TMPSong::DurationToString(c->getFloat(4)); return song; }
//--------------------------------------------------------------------------- void __fastcall TForm2::btnGetDeviceInfoClick(TObject *Sender) { #if defined(TARGET_OS_IPHONE) || defined(TARGET_IPHONE_SIMULATOR) _di_UIDevice device = TUIDevice::Wrap(TUIDevice::OCClass->currentDevice()); lbOSName->Text = lbOSName->Text.sprintf(L"OS Name: %s", device->systemName()->UTF8String()); lbOSVersion->Text = lbOSVersion->Text.sprintf(L"OS Version: %s", device->systemVersion()->UTF8String()); lbDeviceType->Text = lbDeviceType->Text.sprintf(L"Device Type: %s", device->model()->UTF8String()); #endif #if defined(__ANDROID__) lbDeviceType->Text = String().sprintf(L"Device Type: %s", UTF8String(JStringToString(TJBuild::JavaClass->MODEL)).c_str()); lbOSName->Text = String().sprintf(L"OS Name: %s", UTF8String(GetCodename( JStringToString(TJBuild_VERSION::JavaClass->RELEASE))).c_str()); lbOSVersion->Text = String().sprintf(L"OS Version: %s", UTF8String(JStringToString(TJBuild_VERSION::JavaClass->RELEASE)).c_str()); #endif }
void JUdpSocket::Execute() { while(1) { if( GetTerminateFlag() ) break; if( !m_bOpen ){ Sleep(50); continue; } if( !m_bLocalBinded && m_PortLocal != 0 ){ m_SockLocal = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); if( m_SockLocal != SOCKET_ERROR ){ sockaddr_in sockAddrLocal; sockAddrLocal.sin_family = AF_INET; sockAddrLocal.sin_addr.s_addr = ::htonl(ADDR_ANY); sockAddrLocal.sin_port = ::htons(m_PortLocal); BOOL enable = TRUE; ::setsockopt(m_SockLocal, SOL_SOCKET, SO_REUSEADDR|SO_BROADCAST, (const char*)(&enable), sizeof(BOOL)); long bufferSize = JSocketBufferSize; ::setsockopt(m_SockLocal, SOL_SOCKET, SO_RCVBUF, (const char*)(&bufferSize), sizeof(bufferSize)); ::setsockopt(m_SockLocal, SOL_SOCKET, SO_SNDBUF, (const char*)(&bufferSize), sizeof(bufferSize)); if( ::bind(m_SockLocal, (sockaddr*)(&sockAddrLocal), sizeof(sockAddrLocal)) != SOCKET_ERROR ) m_bLocalBinded = true; } } if( !m_bRemoteBinded && m_PortRemote != 0 ){ HOSTENT* hostInfo; if( m_IpRemote == _T("") ) hostInfo = ::gethostbyname("127.0.0.1"); else hostInfo = ::gethostbyname(JStringToString(m_IpRemote).c_str()); if( hostInfo ){ m_SockAddrRemote.sin_family = AF_INET; m_SockAddrRemote.sin_addr.s_addr = ::htonl(((struct in_addr *)hostInfo->h_addr)->s_addr); m_SockAddrRemote.sin_port = ::htons(m_PortRemote); m_bRemoteBinded = true; } } if( m_bLocalBinded ){ if( m_SockLocal && IsDataArrived(10) ){ char buffer[65535]; int addrSize = sizeof(m_SockAddrRemote); while( IsDataArrived(0) ){ long rcvSize = ::recvfrom(m_SockLocal, buffer, 65535*sizeof(TCHAR), 0, (sockaddr*)(&m_SockAddrRemote), (int*)(&addrSize)); if( rcvSize <= 0 ) break; // callback function if( OnRecvData ) OnRecvData(buffer, rcvSize); } } } } Close(); }
void JTcpSocket::Execute() { while(1) { if( GetTerminateFlag() ){ break; } if( m_sockState == JIdle ){ Sleep(50); continue; } m_cs.Enter(); JSocketState state = m_sockState; bool isOpen = m_bOpen; m_cs.Leave(); if( !isOpen ){ Sleep(50); continue; } if( state == JCaller ){ m_socket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if( m_socket != NULL && m_socket != SOCKET_ERROR ){ BOOL bRsa = TRUE; ::setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (const char*)(&bRsa), sizeof(BOOL)); long BufferSize = JSocketBufferSize; ::setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (const char*)(&BufferSize), sizeof(long)); ::setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (const char*)(&BufferSize), sizeof(long)); sockaddr_in addr; addr.sin_family = AF_INET; HOSTENT* hostinfo = NULL; if( m_ip.empty() ) hostinfo = ::gethostbyname("127.0.0.1"); else hostinfo = ::gethostbyname(JStringToString(m_ip).c_str()); if( hostinfo ){ addr.sin_addr.s_addr = ((struct in_addr *)hostinfo->h_addr)->s_addr; addr.sin_port = ::htons(m_port); } if( ::connect(m_socket, (const sockaddr*)(&addr), sizeof(addr)) != SOCKET_ERROR ){ m_cs.Enter(); m_sockState = JConnected; m_bConnected = true; m_cs.Leave(); }else{ Reopen(); } }else{ Reopen(); } } else if( state == JListener ){ m_socket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if( m_socket == NULL && m_socket == SOCKET_ERROR ){ Reopen(); } else{ BOOL bRsa = TRUE; ::setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (const char*)(&bRsa), sizeof(BOOL)); long bufferSize = JSocketBufferSize; ::setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (const char*)(&bufferSize), sizeof(long)); ::setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (const char*)(&bufferSize), sizeof(long)); sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = ::htons(m_port); addr.sin_addr.s_addr = ::htonl(ADDR_ANY); if( ::bind(m_socket, (LPSOCKADDR)&addr, sizeof(sockaddr_in)) == SOCKET_ERROR ){ Reopen(); } else{ sockaddr_in addr; int addrSize = sizeof(sockaddr_in); if( m_port == 0 && ::getsockname(m_socket, (LPSOCKADDR)&addr, &addrSize) != SOCKET_ERROR ) m_portAuto = ::ntohs(addr.sin_port); if( ::listen(m_socket, SOMAXCONN) != SOCKET_ERROR ){ m_cs.Enter(); m_sockState = JListening; m_cs.Leave(); }else{ Reopen(); } } } } else if( state == JListening ){ sockaddr_in addr; int addrSize = sizeof(sockaddr_in); SOCKET accept_sock = ::accept(m_socket, (struct sockaddr*)&addr, &addrSize); if( accept_sock == INVALID_SOCKET || accept_sock == NULL ){ ::shutdown(accept_sock, SD_SEND); ::closesocket(accept_sock); }else{ // close listening socket ::shutdown(m_socket, SD_SEND); ::closesocket(m_socket); m_socket = NULL; long bufferSize = JSocketBufferSize; ::setsockopt(accept_sock, SOL_SOCKET, SO_RCVBUF, (const char*)(&bufferSize), sizeof(long)); ::setsockopt(accept_sock, SOL_SOCKET, SO_SNDBUF, (const char*)(&bufferSize), sizeof(long)); m_sockAccept = new JPeerSocket(accept_sock); if( m_sockAccept != NULL ){ m_sockAccept->OnRecvData.Attach<JTcpSocket>(this, &JTcpSocket::ReadData); m_sockAccept->Open(); m_cs.Enter(); m_sockState = JConnected; m_bConnected = true; m_cs.Leave(); } } } else if( state == JConnected ){ if( !m_bListener ){ char buffer[65535]; if( IsDataArrived(10) ){ long recvSize = 0; while( IsDataArrived(0) ){ recvSize = ::recv(m_socket, buffer, 65535*sizeof(TCHAR), 0); if( recvSize <= 0 ) break; if( OnRecvData && m_sockState == JConnected) OnRecvData(buffer, recvSize); } }else{ //Sleep(50); } }else{ Sleep(50); } }else{ Sleep(50); } } //Close(); }
void JBlockTcpSocket::Execute() { while(1){ if( GetTerminateFlag() ){ break; } if( !m_bOpen ){ Sleep(50); continue; } if( m_sockState == JCaller ){ m_socket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if( m_socket != NULL && m_socket != SOCKET_ERROR ){ BOOL bRsa = TRUE; ::setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (const char*)&bRsa, sizeof(bRsa)); long bufferSize = JSocketBufferSize; ::setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (const char*)&bufferSize, sizeof(bufferSize)); ::setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (const char*)&bufferSize, sizeof(bufferSize)); sockaddr_in sockAddrRemote; sockAddrRemote.sin_family = AF_INET; HOSTENT* hostInfo; if( m_ip.empty() ) hostInfo = ::gethostbyname("127.0.0.1"); else hostInfo = ::gethostbyname(JStringToString(m_ip).c_str()); if( hostInfo != NULL ){ sockAddrRemote.sin_addr.s_addr = ((in_addr*)hostInfo->h_addr)->s_addr; sockAddrRemote.sin_port = ::htons(m_port); if( ::connect(m_socket, (sockaddr*)&sockAddrRemote, sizeof(sockAddrRemote)) != SOCKET_ERROR ){ m_cs.Enter(); m_bConnected = true; m_sockState = JConnected; m_cs.Leave(); }else{ Reopen(); } } }else{ Reopen(); } }else if( m_sockState == JListener ){ m_socket = ::socket(AF_INET, SOL_SOCKET, IPPROTO_IP); if( m_socket == NULL || m_socket == SOCKET_ERROR ){ Reopen(); }else{ BOOL bRsa = TRUE; ::setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (const char*)&bRsa, sizeof(bRsa)); long bufferSize = JSocketBufferSize; ::setsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (const char*)&bufferSize, sizeof(bufferSize)); ::setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (const char*)&bufferSize, sizeof(bufferSize)); sockaddr_in sockAddrLocal; sockAddrLocal.sin_family = AF_INET; sockAddrLocal.sin_addr.s_addr = ::htonl(ADDR_ANY); sockAddrLocal.sin_port = ::htons(m_port); if( ::bind(m_socket, (sockaddr*)&sockAddrLocal, sizeof(sockAddrLocal)) != SOCKET_ERROR ){ sockaddr_in addrLocal; int len; if( ::getsockname(m_socket, (sockaddr*)&addrLocal, &len) != SOCKET_ERROR ){ m_portAuto = ::ntohs(addrLocal.sin_port); } if( ::listen(m_socket, SOMAXCONN) == SOCKET_ERROR ){ Reopen(); }else{ m_cs.Enter(); m_sockState = JListening; m_cs.Leave(); } }else{ Reopen(); } } }else if( m_sockState == JListening ){ sockaddr_in sockRemote; int len; SOCKET sockAccept = ::accept(m_socket, (sockaddr*)&sockRemote, &len); if( sockAccept == INVALID_SOCKET || sockAccept == SOCKET_ERROR ){ ::closesocket(sockAccept); }else{ ::shutdown(m_socket, SD_SEND); ::closesocket(m_socket); BOOL bRsa = TRUE; ::setsockopt(sockAccept, SOL_SOCKET, SO_REUSEADDR, (const char*)&bRsa, sizeof(bRsa)); long bufferSize = JSocketBufferSize; ::setsockopt(sockAccept, SOL_SOCKET, SO_RCVBUF, (const char*)&bufferSize, sizeof(bufferSize)); ::setsockopt(sockAccept, SOL_SOCKET, SO_SNDBUF, (const char*)&bufferSize, sizeof(bufferSize)); m_sockAccept = sockAccept; m_cs.Enter(); m_bConnected = true; m_sockState = JConnected; m_cs.Leave(); } } } Close(); }