예제 #1
0
		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;
		}
예제 #2
0
//---------------------------------------------------------------------------
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
}
예제 #3
0
파일: JSocket.cpp 프로젝트: luoxizhi/JLib
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();
}
예제 #4
0
파일: JSocket.cpp 프로젝트: luoxizhi/JLib
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();
}
예제 #5
0
파일: JSocket.cpp 프로젝트: luoxizhi/JLib
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();
}